今天做项目中,用background显示了二维码和一些文字,但显示到页面上时,二维码和图片都变得模糊了。于是将图片调整、放大,但在放大后,作为背景图片的它则显示不全,无奈之下用了backgroung-size。但background-size在IE下不兼容,故最后使用了img+width+height的做法。

  下面我们就来看看img和bg的区别。

一、从解析机制看

Img属于html标签,background是css方法。一个页面由html、css、js组成,按照浏览器解析机制,html标签优先解析。大家都知道css文件会放在head加载,但是这并不意味着它会立即执行,而是在html加载完后才执行的。所以重要的元素,如logo就应该使用img,我也犯了这个错误啊,改~~~。

如果仅仅是为了显示一张图片,比如banner、广告图等,建议采用background方式。因为不重要的自动往后排,避免占用带宽,造成数据阻塞。

如果图片很多,这里又出现一个新的问题,不同的浏览器支持的并发加载数量是不一样的,(最新测试)IE是10个,FF是10个,图片多,就会出现严重的延迟或者404,因为图片加载慢会影响到页面主要数据呈现,那么让用户看到的都是空白,你好意思让他继续等下去吗!所以,如果不采用lazyload还是采用background比较好。

Img标签优点是自闭和,可以避免空标签出现(空标签也是w3c验证的内容之一)。采用background方式就会出现空标签,bootstrap中的icon都是用i标签加入的,而i标签中是空内容,这样就产生了空标签(并不是说这样做不好,利弊等会聊)。

二、从SEO角度看

刚才说了,Img标签是自闭和的,不能添加文本内容,但是,Img有一个alt属性,而且这个属性在w3c标准中,要求必须有,这样做的优点还是很多的。

第一,图片比较大,或者用户网速比较窝火的时候,加载失败了,至少还有文字提示告诉用户这里是个什么内容的图片。如果用户非要看这个图,那就多刷几次去加载。另外,alt属性有利于辅助阅读,尤其是对盲人朋友,他们使用阅读器浏览页面,如果没有文本提示,就太不厚道了。

第二,alt属性有利于SEO,搜索引擎实现很好的图像识别还是有一段路要走。

当然缺点也是有滴:

第一,Img加载的图片是通过src拿到的,如果HTML代码不允许修改,那怎么换图,只有同名文件替换,但是有可能遇到304状态,需要服务器端做相应的设置。这时background的优点就出来了,换皮肤就是这个栗子。

第二,如果图片显示区域空间大小是预留的,那么图片必须和预留的空间一致,否则图片要么被拉伸要么被压缩,都不是等比例操作。当然,避免这种问题就需要前端和视觉设计师遵守一定的规范。

三、语义化角度

Background和语义化不沾边了,Img是HTML标签,语义明确。

 

建议:重要的需要优先加载的图片最好采用img不重要的图片最好采用background

做SEO是最方便的还是background,图片是放在背景上的,前景写内容,两不误。如果不想让内容显示出来,就加text-indent, -99999你懂的。(以前有这种玩法,是搜索引擎算法单一的年代,关键字比重高 排名就靠前)。

刚才提了一下bootstrap的background方法,bootstrap的做法是用background设置icon,icon的使用太灵活了,所以必须模块化,语义化先靠边站,鱼与熊掌不可兼得。PS:bootstrap v3之后采用了icon font

其次icon的重要性真不高,放在最后加载还减少了带宽占用量,提高PV速度。

img标签语义很明确不能乱用,所以bootstrap采用无语义的i标签来设置icon也挺好。PS:自己项目中使用无语义标签要注意是否向前兼容,要关注HTML5中的定义。

转载于:https://www.cnblogs.com/shytong/p/5127788.html

Img与background的区别相关推荐

  1. android:windowBackground 和 android:background 的区别

    通过问别人,我知道了android:windowBackground 和 android:background的区别 android:windowBackground 一般用于activity启动的时 ...

  2. 关于foreground与background的区别

    关于foreground与background的区别 先看字面翻译,background是背景色foreground 也就是前景色,也就是说foreground与background相对应,顾名思义, ...

  3. img和background的区别

    转载自:https://my.oschina.net/wyc1219/blog/864212 首页 开源项目  问答  动弹  博客  翻译  资讯 专题  活动  招聘  码云特惠 [  登录 |  ...

  4. ImageView---属性android:background与android:src的区别

    ImageView中XML属性android:src和android:background的区别: android:background会根据ImageView组件给定的长宽进行拉伸.android: ...

  5. android中src和background区别

    android中src和background区别 ImageView中XML属性src和background的区别: background会根据ImageView组件给定的长宽进行拉伸,而src就存放 ...

  6. android动态设置src,Android 代码里设置ImageView的src和background

    设置ImageView的src: image.setImageDrawable(getResources().getDrawable(R.drawable.blackk)); String path= ...

  7. 区别不同浏览器,CSS hack写法

    区别不同浏览器,CSS hack写法: 区别IE6与FF: background:orange;*background:blue; 区别IE6与IE7: background:green !impor ...

  8. android背景图拉伸,解决android:background背景图片被拉伸问题

    解决android:background背景图片被拉伸问题 ImageView中XML属性src和background的区别: background会根据ImageView组件给定的长宽进行拉伸,而s ...

  9. table vue 背景图片_table中background背景图片自动拉伸

    解决android:background背景图片被拉伸问题 ImageView中XML属性src和background的区别: background会根据ImageView组件给定的长宽进行拉伸,而s ...

最新文章

  1. 对线性代数的思考和理解
  2. DBUtils开源JDBC类库,对JDBC简单封装(作用是:简化编码工作量,同时不会影响程序的性能)...
  3. 【Android 插件化】Hook 插件化框架 ( 从源码角度分析加载资源流程 | Hook 点选择 | 资源冲突解决方案 )
  4. 基于EM参数估计的SAGE算法的MATLAB仿真
  5. work2的code和问题
  6. oracle10g配置失败6,Oracle10g DataGuard中ORA-16026错误解决-入门基础-Oracle频道-中国IT实验室...
  7. Struts2 之 对xwork的理解
  8. sql 如何设置行级锁_如何使用SQL Server 2016行级安全性过滤和阻止数据访问
  9. 用GitHub Copilot 生成的项目中,40%会引入漏洞
  10. SSIS典型应用场景分析
  11. c+智能指针源码分析_C ++中的智能指针
  12. x86汇编语言复习笔记
  13. 2016网络安全犯罪形势预测
  14. Grails4 使用Audit-Logging Stampable 出现报错:HHH000142: Bytecode enhancement failed
  15. 计算机网络四个阶段特点,计算机网络的发展分哪四个阶段,特点?
  16. web统计:UV、IP、PV、VV
  17. 最小生成树(Minimum Spanning Tree)的原理及实现(Java)
  18. 数据库笔试——查出各部门超出部门平均薪资的员工的姓名,薪资,所在部门名称及部门平均薪水...
  19. PDFCrackers Plus版
  20. 智能插座_如何重置您的ConnectSense智能插座

热门文章

  1. linux mysql 自动加斜杠_【实战演练】Linux操作系统19-Mysql主主复制加Keepalived高可用...
  2. mysql集群2台linux_安装配置基于两台服务器的MySQL集群(2)
  3. html web form id,小程序如何获取多个formId实现详解
  4. c语言 坐标系转换 axistoradius,dynamo编程语言翻译.pdf
  5. 关于各种回归评价指标MSE、RMSE、MAE、R-Squared、Standard Deviation(标准差)
  6. python开发环境和运行环境的区别_Django 开发环境与生产环境的区分详解
  7. python猜数游戏在程序中预设一个_一道Python简单程序结构练习题
  8. 魅族 虚拟位置服务状态:未运行_神车道具送不停 魅族17x跑跑卡丁车礼盒开启预约...
  9. hive load data inpath 空目录_Hive内部表 | 每日五分钟学大数据
  10. python面试题之“该死的for循环系列”(二)