HTML直接插入图片和css使用背景图片区别
img
1 | <img src="图片来源" alt="图片无法显示时显示图片说明性文字" style="设置样式属性" /> |
img 标签虽然不是块状元素,但是可以设置宽高,占位
img 设置 width 后 height 会自适应匹配,如果设置 height 后 width 会自适应匹配,如果同时设置 width,height,img 图片可能会变形
background-image
css 的一个样式,并不占位,可以结合 background-size,background-repeat,background-position 等属性来设置图片位置,大小等
所在的元素必须指定 height,否则背景图片显示不出来,可以不指定 width,如果不指定 width,它的宽度则继承父元素的宽度
区别
- img 是 html 标签,占位,background-image 是 CSS 样式,不占位
- img 是 document 对象可以操作(比如:从 document 对象中删除),background-image 是不能操作的
- 在网页加载过程中,img 作为网页结构内容的一部分,会在加载结构的过程中加载,而 background-image 作为 css 样式的一部分,会在结构加载完成后开始加载。(如果你引入了一个很大的图片,在这个图片下载完成之前,img 后面的内容都不会显示,而如果用 css 引入同样的图片,网页结构和内容加载完成之后,才开始加载背景图片,不会影响你浏览网页内容。)
- img 标签点击会选中或放大图片,background-image 则不会
加载问题
- 背景图片会等到 html 结构加载完成才开始加载
- img 标签是网页结构的一部分,会在 html 结构加载的时候加载
- 在网页加载的过程中,背景图片会等到结构加载完成(网页的内容全部显示以后)才开始加载。
- img 标签是网页结构(内容)的一部分会在 html 结构加载的过程中加载,换句话讲,网页会先加载 img 标签的内容,再加载背景图片,如果你用引入了一个很大的图片,那么在这个图片下载完成之前,img 后的内容都不会显示。
- 用 css 来引入同样的图片,网页结构和内容加载完成之后,才开始加载背景图片,不会影响你浏览网页内容。(即,img 是内容性的,背景图是修饰性的)
加载失败显示问题
背景图片在加载失败或路径找不到时,不会显示图片标记,
img 标签在加载失败或找不到路径时,会显示一个撕裂的小图标标记
数据图与非数据图
所谓数据图就是从后台获取的图片,一般就用 img 标签显示,其他的图片一般就作为背景图展示
何时使用
使用 img
- 使用 IMG(alt 文本)图像有一个重要的语义时,比如一个警告图标。这将确保图像的意义可以很好的和 user-agents 沟通,包括屏幕阅读器(宣传、产品图片等)
- 作为 html 结构内容的一部分
- 展示从后台传过来的数据
- 对图片进行缩放操作
- 利于搜索引擎搜索时
- 有明确的语义化要求
- 图片作为页面的组成部分而不是修饰部分
- 使用 img 代替有背景图像可以显著提高性能的动画背景
- 显示图片只给定宽或高且不能截断图片,并且保证图片宽高比
使用背景图
- 不重要的用作装饰、美化的图片
- 不是 html 结构的一部分
- 图像代替文本使用时使用 backgrond-image(避免出现无语义化标签)
- 缩短下载时间通过 CSS sprites 时使用 backgrond-image
- 为不同的屏幕分辨率展示不同的图像时(media 查询时使用背景图)
- 作为背景图片
- 禁止用户保存图片(点击鼠标右键另存为操作)
- 允许图片拉伸,平铺,截取等情况
background-size: 100% 100%
与background-size: cover
之间的区别
background-size: 100% 100%;
按容器 比例撑满,图片会变形background-size: cover;
把背景图片放大到适合元素容器的尺寸,图片比例不变