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

简介: 前端西瓜哥

大家好,我是前端西瓜哥。今天带大家学习 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 则是装饰。他们有各自的特性,需要根据实际需求选择使用。

相关文章
|
Web App开发 缓存 移动开发
V8 JS AOT化的探索与实践
JS 语言的动态性非常优秀,其弱类型等语言特性也使得一线业务开发者更容易上手,但这也导致 JS 每一次运行前都要重复编译,使得 JS 的执行性能不理想;虽然之前 UC 内核有做过 Code Cache 方案,但支持的场景不够完整,与原生 Native 的技术方案比,尤其是首次启动场景(如各类大促活动等)还是有比较大的差距。为了能尽可能做到与 Native 对标,缩小性能差距,同时让业务开发者无感,我们开发了 JS AOT 功能。本分享将结合目前集团内自有业务形态,以及 JS 在 Web 中的执行过程,介绍JS AOT是如何设计和实现的,以及能给业务带来哪些收益。本篇分享来自阿里巴巴的喻世江在第
3261 0
V8 JS AOT化的探索与实践
|
存储 机器学习/深度学习 Java
Java 大视界 -- Java 大数据在智慧水利水资源调度与水情预测中的应用创新(180)
本文探讨了Java大数据技术在智慧水利中的创新应用,重点分析了其在水资源调度与水情预测中的关键技术与实践案例。通过大数据存储、实时处理与深度学习模型,Java有效提升了水利数据管理效率与水情预测准确性,助力传统水利向智能化转型。
|
5月前
|
人工智能 监控 安全
[理论篇-14]大模型评估与可观测性——如何知道你的 AI 到底行不行
用最通俗的话讲清楚,为什么 AI 应用上线前必须"考试"、上线后必须"体检",以及 2025-2026 年业界最实用的评估和监控方法。不管你是开发者、产品经理、还是企业管理者,读完这篇,你就知道怎么判断一个 AI 系统"到底好不好"。
392 3
|
10月前
|
敏捷开发 人工智能 监控
AI 正在“杀死”敏捷开发?别闹了,它反而让我们重新读懂敏捷的真谛
AI时代,敏捷开发非但不会消亡,反而迎来重生。它戳破伪敏捷的泡沫,倒逼团队回归“以人为本、快速验证价值”的初心。AI替代不了人的洞察与判断,只会让真正的敏捷更珍贵。
|
人工智能 安全 JavaScript
Open Interpreter:AI 赋能终端!在终端中对话AI模型进行编程,通过运行代码来完成各种计算机操作任务
Open Interpreter 是一个让语言模型运行代码的强大工具,提供了一个类似 ChatGPT 的界面,支持多种编程语言和丰富的功能。
2135 7
Open Interpreter:AI 赋能终端!在终端中对话AI模型进行编程,通过运行代码来完成各种计算机操作任务
|
前端开发 持续交付 开发工具
理解前端开发中的 Git - Rebase
Git Rebase 是前端开发中常用的一种版本控制操作,用于将一个分支的更改整合到另一个分支。与合并(Merge)不同,Rebase 可以使提交历史更加线性整洁,有助于保持代码库的清晰和可维护性。通过 Rebase,开发者可以将特性分支的改动应用到主分支上,同时保留或重写提交记录。
1144 10
|
数据采集 XML Web App开发
6个强大且流行的Python爬虫库,强烈推荐!
6个强大且流行的Python爬虫库,强烈推荐!
1339 6
|
存储 数据采集 数据格式
Python自动化Office文档处理全攻略
本文介绍如何使用Python自动化处理Word、Excel和PDF文档,提升办公效率。通过安装`python-docx`、`openpyxl`、`pandas`、`PyPDF2`和`pdfplumber`等库,可以轻松实现读取、修改、创建和批量处理这些文档。具体包括:自动化处理Word文档(如读取、修改内容、调整样式),Excel文档(如读取、清洗、汇总数据),以及PDF文档(如提取文本和表格数据)。结合代码示例和实战案例,帮助你掌握高效办公技巧,减少手动操作的错误率。
1496 1
|
存储 缓存 Serverless
使用云存储构建云上推理平台
本文介绍了大模型分布式推理的工作流、IO分析、存储需求及解决方案。通过分布式缓存和P2P能力,优化了大规模并发场景下的模型加载与分发效率,提升了推理性能。NAS文件存储和OSS加速器在高并发读取和小模型缓存中表现出色,支持秒级加载和高效数据处理。阿里云存储为开发者提供了稳定、高效的推理环境,助力AI应用快速落地。