很多新手在刚开始学习HTML标签的时候,老师一定会教你

<img src="xxx.png"/>

  这种引入图片格式,第二天学习css的时候,老师又会教你给div等元素添加背景图片,

div {
background-image: url(xxx.png);
}

  那么这两种方式究竟孰优孰劣,分别应该在什么情况下使用呢?今天我在这里就给大家详细讲解一下:

  关于img标签,我们要知道,它除了src路径以外,还有两个属性,一个是alt,一个是title

<img src="xxx.png" alt="" title=""/>

  首先我们讲一下title,它的作用是什么呢?我们来看一下,当我们在body中写入以下代码的时候,

<img src="img/柯基.jpg" alt="" title="Hello,World!"/>

  打开浏览器,会显示对应的那张图片,title里面写的"Hello,World!"是不显示的,只有当我们的鼠标放到图片上暂留的时候,鼠标上才会出现提示性文字如下图:

  title属性是对元素的注释说明和额外补充,当鼠标放到文字或图片上时候,会显示title对应的文字。要注意的一点是,title这个属性并不是img标签特有的,加给button、div等其他标签都是可以的,我曾经看过一些文章,作者提议给网页中所有的标签都加上title属性,这样将来用户把鼠标放到每个按钮、图片、文字上,都有title提示,但是我看响应附和者寥寥,为什么呢,太麻烦了呗,你作为一个程序员你愿意多此一举吗,况且此举还会增加代码体积。
  接下来我们再说说alt属性,alt其实就是你windows通用键盘空格左右的那个键,也是你吃鸡(PC端)的时候,可以自由转头的那个键,它的本意是替换的意思,alt属性在img标签里面是一个必须属性,其作用是当我们的图片,在用户的网络条件差、路径错误或者浏览器禁用图像等情况下,用户看不到这张图片,alt内的解释性文字会显示出来,使得用户即使看不到图片,也不会影响到对整个页面的浏览,如下图:
  而且alt属性里的值还会被搜索引擎抓取到,比如你现在在百度搜索柯基,那么我们网页当中的这张图片就可能会被百度图片给抓取到,如下:

  搜索引擎真的会分辨你网页当中的图片是不是柯基犬吗?人工智能有这么强大?可以智能识图?并不是的,搜索引擎是通过识别你网页当中的alt属性,来辨别本图片是不是它所要抓取的。我们的网站肯定是希望搜索引擎抓取到我们,这样我们的浏览量就会加大,我们的流量就会更多,我们就能赚取更多的广告费,我们就会更有银子。

  其次,还有一个原因,img加载更快对于我们一篇HTML文档来说,浏览器对文档的加载是从上往下的,我们的css样式是在style标签内,当我们的浏览器加载到style标签的时候,它就会停下,跳过去,继续加载HTML,HTML加载完成后,才会继续加载css样式表,否则的话,假如我们在style标签内写了.div1{width:100px;}这时候浏览器并没有加载到body,因为我们的style标签是在head内,是在body上面的,这时候浏览器就无法找到div1并给其设置宽度。所以,如果论加载速度,还是body中的img标签加载更快。

  最后呢,还有一个原因,是从用户体验角度来讲的。如果你在body 中通过img标签引入一张图片,那么用户在浏览网页的时候,是可以直接在图片上右键,然后另存为,把图片保存下来,但是background是不可以的;

  还有一种情况比较少见:针对盲人用户,盲人用户眼睛无法直接看到网页,但是又有上网的需求,这时候,患者就可以借助一些读屏软件来浏览我们的网页,这时候问题来了,读屏软件可以阅读文字,可是它怎样阅读我们的图片给患者听呢?这是一个问题,所以这时候我们之前提到的alt属性的作用就来了,读屏软件可以直接阅读图片的alt属性值,从而使盲人用户看不到图片,也可以知道这里显示的是什么。

   所以,综上所述,一般情况下,在我们网页中主体用到的图片,尽量用img标签引入是最好的,但是这也并不是绝对,在网页中用到的logo等图标,我们一般用background来显示,或者该图片本就是背景图,我们就一定使用background。
 
 


HTML页面插入图片,使用background还是img标签的更多相关文章

  1. JSP 页面中插入图片

    第一步 在 JSP 页面中插入图片 EL 表达式 ${pageContext.request.contextPath } 的值为当前的项目名称 <html> ... <body> ...

  2. 富文本编辑器UEditor自定义工具栏(二、插入图片、音频、视频个性化功能按钮和弹层及自定义分页符)

    导读:本篇将简单探讨插入图片.音频.视频的功能按钮实现方式 传送门:富文本编辑器UEditor自定义工具栏(一.基础配置与字体.背景色.行间距.超链接实现) 一.效果图 1.UEditor自定义工具栏 ...

  3. C#操作word的一些基本方法(word打印,插入文件,插入图片,定位页眉页脚,去掉横线)

    Microsoft.Office.Interop.Word.Application wordApp = new ApplicationClass() word对象 2. Microsoft.Offic ...

  4. js获取页面中图片的总数

    查看效果:http://keleyi.com/keleyi/phtml/image/9.htm 下面是完整代码: <html><body><div id="ke ...

  5. 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】

    iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...

  6. 关于利用input的file属性在页面添加图片的问题

    在页面添加图片涉及到兼容的问题怎么解决兼容问题呢?请看下面分析: 在IE浏览器上面我们能直接通过获取其input的value值来获取其图片的路径. 在火狐和谷歌需要用createObjectURL(( ...

  7. html2canvas页面截图图片不显示

    前两天在一个群里,有人问使用html2canvas屏幕截图的时候为什么页面的图片不显示只显示了文字,我没有做过屏幕截图的需求,所以不是很清楚,今天稍稍测试了一下. 在github上将html2canv ...

  8. 在Vue项目使用quill-editor带样式编辑器(更改插入图片和视频)

    vue-quill-editor默认插入图片是直接将图片转为base64再放入内容中,如果图片比较大的话,富文本的内容就会很大. 插入视频是直接弹框输入URL地址,某些需求下我们需要让用户去本地选择自 ...

  9. 插入图片新方式:data:image

    我们在使用<img>标签和给元素添加背景图片时,不一定要使用外部的图片地址,也可以直接把图片数据定义在页面上.对于一些“小”的数据,可以在网页中直接嵌入,而不是从外部文件载入. 如何使用 ...

随机推荐

  1. Django框架简介与使用注意事项

    一.Django框架简介 MVC框架和MTV框架 MVC框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model). ...

  2. 《HTML5+CSS3+JavaScript 从入门到精通(标准版)》学习笔记(二)

    这是一个应用的例子,学以致用嘛 <!--这些代码我就直接放在了博客园的"页首Html代码"中,用于自定义博客,效果就是页面左上角的白色文字--> <p> & ...

  3. Lab_1:练习一——理解通过make生成执行文件的过程

    参考网站: https://www.cnblogs.com/chaunceyctx/p/7188779.html https://cloud.tencent.com/developer/article ...

  4. 百万年薪python之路 -- 装饰器

    装饰器 1.1 开放封闭原则 开放封闭原则具体定义是这样: 1.对扩展是开放的 我们说,任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改.所以我们必须允许代码扩展.添加新 ...

  5. 使用 git bisect 定位你的 BUG

    Git 是开发者的好帮手,今天跟大家分享的是用 git bisect 来找到你代码中的 bad commit . 背景 你可能遇到过这种情况, 昨天下班前把模块开发完了, 单元测试验证通过, git ...

  6. N042第一周

    1.按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别. slackware:SUSE Linux Enterprise Server,OpenSuse debian:ubuntu,dee ...

  7. Java基础(三十六)日期和时间

    1.Date类 (1)无参数构造方法创建的对象可以获取本机当前时间 (2)有参数构造方法创建的对象表示举例计算机系统自身时间的距离为给定的参数 Date date = new Date(); // 当 ...

  8. 爬虫连接mongodb、多线程多进程的使用

    一.连接mongodb 1.            设置数据库 client=pymongo.MongoClient(‘localhost’) 2.            db=client[‘lag ...

  9. Spring中@Resource注解报错

    描述:Spring框架中,@Resource注解报错,在书写时没有自动提示 解决方法:因为maven配置文件的pom.xml文件中缺少javax.annotation的依赖,在pom.项目路中加入依赖 ...

  10. Android_Fragment栈操作 commit()问题分析

    栈操作时遇到一个问题 getFragmentManager().beginTransaction() .replace(R.id.fl_container,bFragment) .addToBackS ...