当img 遇到 background,这个世界就是这么小~~~~~

1
从解析机制看

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

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

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

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

2
从SEO角度看

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

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

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

第三,说说缺点,Img加载的图片是通过src拿到的,如果HTML代码不允许修改,那怎么换图,只有同名文件替换,但是有可能遇到304状态,需要服务器端做相应的设置。这时background的优点就出来了,换皮肤就是这个栗子。Img的另一个缺点是,显示区域空间大小的预留,图片必须和预留的空间一致,否则图片要么被拉伸要么被压缩,都不是等比例操作,设计师看到就吐血了,一个像素的差异都能找出来,伤不起的。当然,这种问题就是前端和视觉设计师必须遵守一定的规范。栅格化飘过~~~~~~

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

刚才提了一下bootstrap的background方法,bootstrap的做法是用background设置icon,icon的使用太灵活了,所以必须模块化,语义化先靠边站,鱼与熊掌不可兼得。其次icon的重要性真不高,放在最后加载还减少了带宽占用量,提高PV速度。img标签语义很明确不能乱用,所以bootstrap采用无语义的i标签来设置icon也挺好,但要注意无语义标签是否向前兼容,要关注HTML5中的定义。

3
语义化角度

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


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

以上属于个人拙见,欢迎指正。

最新文章

  1. Ue4的UE_LOG
  2. TP中关于自定义类库的添加和使用
  3. python学习笔记-Day7
  4. php代码审计基础笔记
  5. POJ C程序设计进阶 编程题#3:寻找山顶
  6. 解决:javah 无法访问引用Android对象的问题
  7. Github上四种Lisp方言的流行度 | 肉山博客 (Wenshan's Blog)
  8. PyCharm 教程
  9. Java异常处理-----抛出处理
  10. Ubuntu 16.04 使用校园网客户端上网
  11. 黏包现象之udp
  12. server.Transfer不工作
  13. Centos7搭建邮件服务器-Postfix+Cyrus-sasl+Courier-authlib+Dovecot+ExtMail+Centos7
  14. 原创 《算法》java第四版,标准输入
  15. ldap服务备份与恢复
  16. 一些LinuxC的小知识点(一)
  17. Vue的计算属性和侦听器
  18. C语言浮点数存储结构
  19. 【scala】 scala xml 处理(⑨)
  20. 显示Deprecated: Assigning the return value of new by reference is deprecated in解决办法

热门文章

  1. maven 搜索不到想从本地仓库依赖的jar包--重建本地maven仓库索引
  2. storm入门(一):storm编程框架与举例
  3. JQuery FullCalendar(一)
  4. hdu 3065 AC自动机
  5. SQL分页常用的两个存储过程
  6. easyui的datagrid行的某一列添加链接
  7. android开发学习之Layer List
  8. android wifi ANR问题分析总结
  9. /proc/sysrq-trigger该文件能做些什么事情-转载
  10. 大气漂亮的jQuery水晶样式下拉菜单