img和background加载图片区别

目前前端页面显示图片的方式用两类,一类是使用img标签引入图片,一类是使用background属性来设置图片背景,那么这两类方法之间有区别吗?到底什么地方应该使用background,什么地方应该使用img呢?今天就从几个方面给大家分享一下如何认识这个两个标签,并且如何使用

<body>
  <img src="./a.png" alt="" style="display:none;">                  //img标签   元素display:none 请求图片
  <img src="./b.png" alt="" style="display: hidden;">               //img标签   元素display:hidden 请求图片
  <div  style="background:url(‘./c.png‘);display:none"></div>      //background 元素display:none 请求图片
  <div  style="background:url(‘./d.png‘);display:hidden"></div>      //background 元素display:hidden 请求图片

  <div class="father" style="display: none;">                        //img标签父级元素  display:none 请求图片
    <img src="./a1.png" alt="">
  </div>
  <div class="father" style="display: hidden;">              //img标签父级元素  display:hidden 请求图片
    <img src="./b1.png" alt="" >
  </div>
  <div class="father" style="display: none;">                          //元素background 父级元素 display:none 不请求图片
    <div  style="background:url(‘./c1.png‘);"></div>
  </div>
  <div class="father" style="display: hidden;">                        //元素background 父级元素 display:hidden 请求图片
    <div  style="background:url(‘./d1.png‘);"></div>
  </div>
</body>
结果
第一个方面:从加载速度角度看

img属于页面的标签,background属于元素的属性,根据前端页面加载顺序,img标签会优先加载,当HTML的标签加载完成后才会执行元素的样式。
很多人会以为style标签在body加载所以background会先于img显示图片,其实页面在加载完style标签后并不会立即去执行它,而是当页面结构加载完成后才会去执行CSS样式。
所以从加载速度上看img要快于background。

第二个方面:从用户角度看

img标签显示的图片用户可以右键保存至本地,而background显示的用户则无法保存。
当图片加载错误时, img可以用alt的文字来告诉用户页面这张图片区域应显示的内容,但是background就无法做到。

img标签的二维码图片可以通过手机长按识别二维码

而background里的二维码图片不可以通过手机长按识别二维码

使用img标签并设置一个alt的文字,能够帮助存在视觉障碍的读者能够通过屏幕阅读器得知页面的主要内容, 包括图片内容 , 但是使用background就无法实现。

第三个方面:从SEO角度看


为了让搜索引擎能够将我们的网站尽可能的在搜索结果中靠前显示,我们就需要搜索引擎能够读懂我们的网页内容。我们现在的搜索引擎是无法直接获取图像所描述的内容的, img的alt属性能够很好地让搜索引擎知道该图片的信息, 而background无法做到让搜索引擎直接读懂图片。

第四个方面:从语义上看

img表示的是页面内容的一部分,而background只是一个样式,样式起的是一个修饰作用,所以当我们想显示的图片是网站想要展示给用户的内容的一部分的时候, 如:产品介绍,新闻图片,美照等等的时候, 我们需要使用img。 当这张图片只起装饰的作用时, 我们可以使用background。

虽说两者最终显示的效果相同,但根据不同的使用目的我们需要柔性的调整我们最终选择哪种方法去。

原文地址:https://www.cnblogs.com/zjx304/p/10245768.html

时间: 2024-07-29 15:50:20

img和background加载图片区别的相关文章

图片预加载与图片懒加载的区别与实现

预加载与懒加载,我们经常经常用到,这些技术不仅仅限于图片加载,我们今天讨论的是图片加载: 一.什么是图片预加载与懒加载: 图片预加载:顾名思义,图片预加载就是在网页全部加载之前,提前加载图片.当用户需要查看时可直接从本地缓存中渲染,以提供给用户更好的体验,减少等待的时间.否则,如果一个页面的内容过于庞大,没有使用预加载技术的页面就会长时间的展现为一片空白,这样浏览者可能以为图片预览慢而没兴趣浏览,把网页关掉,这时,就需要图片预加载.当然这种做法实际上牺牲了服务器的性能换取了更好的用户体验. 图

UIImage加载图片的两种方法区别

Apple官方的文档为生成一个UIImage对象提供了两种方法加载图片: 1. imageNamed,其参数为图片的名字: 2. imageWithContentsOfFile,其参数也是图片文件的路径. 那么两种有什么区别吗? 肯定是有的.根据Apple的官方文档: imageNamed: 这 个方法用一个指定的名字在系统缓存中查找并返回一个图片对象如果它存在的话.如果缓存中没有找到相应的图片,这个方法从指定的文档中加载然后缓存并返回这 个对象.因此imageNamed的优点是当加载时会缓存图

UIImage加载图片的区别

前言 关于本地图片UIImage的加载问题,还是需要注意的.不同的加载处理方式,在效率和性能上还是有差异的. 今天,我们来讲讲UIImage的加载应该选择什么样的API来加载! 两种API 这两种API分别是: -imageNamed: 默认加载图片成功后会内存中缓存图片,这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象.如果缓存中没有找到相应的图片对象,则从指定地方加载图片然后缓存对象并返回这个图片对象.通常是加载bundle中的图片资源! -initWithContentsOfFi

用javascript预加载图片、css、js的方法研究

预加载的好处可以让网页更快的呈现给用户,缺点就是可能会增加无用的请求(但图片.css.js这些静态文件可以被缓存),如果用户访问的页面里面的css.js.图片被预加载了,用户打开页面的速度会快很多,提升用户体验.在用到一些大图片展示的时候,预加载大图是很不错的方法,图片更快的被呈现给用户.不多说了,作为一个前端攻城师都懂的,下面分享我做的测试和得到的结果. 先说需要知道的服务器返回的status code:status-code: 200 - 客户端请求成功status-code: 304 -

Android:ViewPager扩展详解——带有导航的ViewPagerIndicator(附带图片缓存,异步加载图片)

大家都用过viewpager了, github上有对viewpager进行扩展,导航风格更加丰富,这个开源项目是ViewPagerIndicator,很好用,但是例子比较简单,实际用起来要进行很多扩展,比如在fragment里进行图片缓存和图片异步加载. 下面是ViewPagerIndicator源码运行后的效果,大家也都看过了,我多此一举截几张图: 下载源码请点击这里 ===========================================华丽的分割线==============

UI小项目之拳皇动画的实现(抽取加载图片和播放音乐的方法)

实现思路 1.加载图片 2.播放音乐 实现思想 1.封装思想 抽取相同代码生成一个新的方法,通过传递参数调用该方法: 2.内存管理思想 不需要每次调用方法时都重新加载图片,for循环加载图片写在ViewdidLoad中 下列代码没有对运行过程中内存管理进行优化 其中加载图片有两种方法: 通过imageNmae加载有缓存 通过imageWithContentsOfFile加载无缓存 有无缓存的区别: 有缓存,使用时不需要重新加载 无缓存,使用时才加载 #import "ViewController

cocos2d-x 3.3 之卡牌设计 NO.6 Loading界面(异步加载图片,plist)

刚开始做卡牌的时候没有想到要做loading,因为小游戏资源不多. 但是后来不断的加图片,直到在真机上发现卡顿的问题,我才知道该需要加loading了...... 首先,我们先定义类: class Loading : public Layer { public: bool init(); CREATE_FUNC( Loading); static Scene* CreateScene(); int total_pic_num;//需加载图片数 int total_sound_num;//需加载声

iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?

Apple官方的文档为生成一个UIImage对象提供了两种方法: 1. imageNamed,其参数为图片的名字: 2. imageWithContentsOfFile,其参数也是图片文件的路径. 那么两种有什么区别吗? 肯定是有的.根据Apple的官方文档: imageNamed: 这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象如果它存在的话.如果缓存中没有找到相应的图片,这个方法从指定的文档中加载然后缓存并返回这个对象.因此imageNamed的优点是当加载时会缓存图片.所以当图

Android App 启动时显示正在加载图片(源码)

微信.QQ.天天动听等程序,在打开时显示了一张图片,然后跳转到相关界面.本文实现这个功能,其实很简单.... 新建两个Activity,LoadingActivity,MainActivity,将LoadingActivity设置为android.intent.action.MAIN.使用TimerTesk,或者Thread将LoadingActivity显示几秒后跳转到MainActivity界面. LoadingActivity: new Timer().schedule(new Timer