img 元素和 background-image 属性的区别

本文涉及的产品
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 前端西瓜哥

大家好,我是前端西瓜哥。今天带大家学习 img 元素和 background-image 属性的区别。

image.png

img 是 HTML 元素,基本用法如下:

<img src="./img.jpg" alt="图片描述" />

background-image 则是一个 CSS 样式属性,用于设置元素的背景图片。

.bg {
  background-image: url("./img.jpg");
}

img 是内容的一部分

首先 img 是 DOM 树的一部分,属于网页的内容

有些客户端(比如爬虫、性能差的电子阅读器)不会解析样式或执行脚本,但包括 img 在内的 DOM 树是一定会解析的。即使客户端不解析图片,也可以获得 img 的 alt 内容,得到图片的描述。

而 background-image 则是 装饰,用于美化内容。

所以,如果你的图片是和正文内容有关的,建议使用 img,有利于语义化和 SEO。

二者的特性

img 即使不手动设置宽高,也会自定占据空间,将其他元素挤开。

background-image 则作用在元素上,本身不能撑开元素。

background-image 可以配合背景图片相关属性,实现各种效果,比如雪碧图、平铺瓷砖等,这是 img 元素做不到的。

雪碧图(CSS sprite),指的是将多个小图标放到一个图片上。然后通过 width、height、background-position 来框选想要用的图标。

加载时机

img 会比 background-image 先加载,因为渲染过程为先解析 DOM 树,然后再应用样式树。如果 background-image 还是在一个外链的 css 文件中,加载时机会更晚。

所以 background-image 更适合作为 banner 轮播图、广告图。因为 banner 通常都是广告,可以晚点加载,不要阻塞其他内容。

此外,延后加载时机还可以使用 JS 脚本加载的方式。

打印

使用浏览器的打印功能。img 会被渲染,但 background-image 却会被丢弃。

如果你希望你的网页支持良好的打印效果,且图片也是必要的内容,使用 img。

右键保存

在浏览器中,img 元素可以点击鼠标右键的方式下载保存图片。但 background-image 不行。

你可以根据需要来决定是否提供用户右键保存的功能。

当然,并不是总能阻止,如果用户能够使用且熟悉浏览器开发者工具,他也可以找到对应资源下载。

结尾

img 是内容的一部分,background-image 则是装饰。他们有各自的特性,需要根据实际需求选择使用。

相关文章
|
1月前
|
搜索推荐
img标签上title与alt属性的区别是什么?
img标签上title与alt属性的区别是什么?
50 0
|
9月前
|
前端开发
background-image中的细节
background-image中的细节
|
1月前
|
前端开发
背景图像[background-image]
背景图像[background-image]。
18 1
|
1月前
|
数据采集 算法 前端开发
img标签中的title和alt属性有什么区别
img标签中的title和alt属性有什么区别
24 0
|
编解码 前端开发 JavaScript
img标签中的srcset属性有什么用?
img元素的srcset属性用于浏览器根据宽、高和像素密度来加载相应的图片资源。 也就是说,我们不需要使用JavaScript也可以实现分辨率自适应。
353 0
|
Web App开发 前端开发
给Img标签设置height和width属性
给Img标签设置height和width属性
583 0
|
前端开发 Android开发
彻底记住ImageView的background和src的区别
彻底记住ImageView的background和src的区别
|
前端开发 JavaScript
【JavaScript】动态修改元素的 background-image
【JavaScript】动态修改元素的 background-image
964 0
|
程序员
好程序员分享该如何选择background-image和img标签
  好程序员分享该如何选择background-image和img标签,用img标签  如果你希望别人打印页面时候包含这张图片请使用img标签  当这张图片有非常有意义的语义,比如警告图标,请使用img标签及它的alt属性。
6784 0