为 HTML 添加图片 – 从基本语法到高级技巧

本文将探讨在 HTML 中添加图像的各种方法,从基本的 <img> 标记到使用 CSS 和 JavaScript 等高级技术。文章还将介绍性能和可访问性方面的最佳实践,并提供 HTML 示例,帮助您轻松地将图像集成到网络项目中。

HTML 中的图像

如果网页只有文字,那就太乏味了。图像和其他类型的媒体在使内容具有视觉吸引力、吸引力和信息量方面发挥着至关重要的作用。因此,在 HTML 中添加图像是网页开发的基本组成部分。

图像格式 选择正确的图像格式会影响加载速度和质量:

为优化性能和搜索引擎优化,请压缩图片以减小文件大小,并使用描述性文件名来提高搜索可见性。

注: 搜索引擎也会读取图片文件名,并将其作为优化搜索查询的考虑因素。因此,请给图片取一个有意义的名字:landscape.jpgimg1.jpg更好。

使用 <img> 标记添加图片

在 HTML 页面中添加图片的最简单方法是使用 <img> 标签。该元素不包含结束标记,至少需要使用一个属性–src,其中包含要嵌入页面的图片的路径。不过,为了更好地进行搜索引擎优化,我们建议同时使用其他属性。关键属性包括

如果图片名为 landscape.jpg 并与 HTML 页面位于同一目录下,则可以如下所示嵌入图片:

1<img src="landscape.jpg" alt="Summer landscape – a field with windmills." width="400" height="150">

注: 互联网上的许多图片都有版权。侵犯版权是违法行为。如果您没有创作图片,而是从网上获取的,则应确保图片属于公共领域或您已获得使用许可。

添加不同来源的图片

可以使用本地文件路径、远程 URL 或直接使用 Base64 编码嵌入 HTML 中的图片。

本地图片

使用本地镜像通常比远程镜像更好,因为本地镜像加载速度更快,减少了对外部服务器的依赖,即使互联网连接缓慢或远程服务器不可用,也能确保可用性。本地图像还能防止来自第三方的潜在跟踪或未经授权的更改,从而提高安全性。

如果图片与 HTML 页面位于同一目录下的 images子目录中,则可以像这样嵌入图片:

1<html>
2	<body>
3		<h1>Adding Images Using img Tag</h1>
4		<img src="images/landscape.png" alt="Summer landscape – a field with windmills." width="400" height="150" >
5		<p>When an image is loaded without specified width and height attributes, the browser initially doesnt reserve space for it, causing content to shift as the image loads.</p>
6	</body>
7</html>

图像宽度和高度

加载图片时如果没有指定 widthheight属性,浏览器最初不会为其预留空间,导致图片加载时内容移动。这种现象会对用户体验产生负面影响,使页面看起来不稳定,尤其是在连接速度较慢的情况下。通过指定 widthheight,浏览器可以在加载图片前为其分配空间,防止布局突然移动。这种做法不仅能提高视觉稳定性,还能改善核心网页指标,有助于提高搜索引擎优化和网站整体性能。

下图显示了网页的示例:没有为尚未加载的图像预留空间(a);由于在<img>标记中指定了 heightwidth属性,网页上为图像预留了空间(b);加载了图像的网页(c)。

文本 “图示了图片加载后浏览器的行为(布局移动)"。

注: 网页加载时,浏览器会从网络服务器中检索位于 src 中指定路径的图片,并将其插入页面。如果图片丢失,浏览器会显示一个断开链接图标和 alt 文本。

远程图像

绝对文件路径是图像文件的完整路径,从网络服务器根目录或使用完整 URL 开始。例如,您也可以使用绝对 URL 嵌入图片:

1<img src="https://docs.aspose.com/svg/images/api/lioness.jpg" alt="The muzzle of a lioness close-up." width="350" height="200" >

但不建议使用绝对 URL。在可能的情况下,您应该将要在网站上使用的图片托管到服务器上,在简单的设置中,这意味着将网站的图片与 HTML 存储在同一服务器上。

Base64 编码

Base64 编码可将图像作为数据 URI 直接嵌入 HTML,无需单独的图像文件。这样可以减少 HTTP 请求,缩短小图片或图标的加载时间。不过,Base64 编码图像会增加 HTML 文件的大小,从而影响性能。它们最好用于嵌入式图形,如徽标或小型用户界面元素,而不是大型图像。

此代码片段演示了如何在 HTML 中嵌入 Base64 图像:

1<img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwIiBoZWlnaHQ..." alt="Red circle" width="300" height="200" >

The following HTML code shows how to add an image to an HTML file from three different types of image sources:

 1<html>
 2    <body>
 3		<h1>Add Image to HTML</h1>
 4		<!-- Adding image to HTML using local path -->
 5		<img src="images/georgia-castle.png" alt="Ananuri fortress complex in Georgia" width="350" height="200" >
 6
 7		<!-- Adding image to HTML using absolute URL -->
 8		<img src="https://docs.aspose.com/svg/images/api/lioness.jpg" alt="The muzzle of a lioness close-up." width="350" height="200" >
 9
10		<!-- Adding image to HTML using Base64 encoded data -->
11		<img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8Y2lyY2xlIGN4PSIxNTAiIGN5PSIxMDAiIHI9I
12		jgwIiBzdHlsZT0iZmlsbDpyZWQ7IHN0cm9rZS13aWR0aDo1OyBzdHJva2U6dGVhbCIgLz4NCjwvc3ZnPg==" alt="Red circle" width="300" height="200" >
13	</body>
14</html>

图片说明了上面编写的 HTML 文件。我们看到从本地文件、远程源 URL 以及通过 Base64 编码数据加载的三幅图像。

文本 “使用本地路径、绝对 URL 和 Base64 编码添加到 html 中的三幅图像”。

总结

  1. 使用 <img> 标签 – 添加带有 srcaltwidthheight 属性的图片。所有这些属性对于可访问性和搜索引擎优化都很重要。
  2. 选择正确的格式 – 使用 JPEG(照片)、PNG(透明)、SVG(可缩放)、WebP(优化)。与 JPEG 或 PNG 等格式相比,使用 WebP 格式可提供更好的压缩效果和质量。
  3. 本地图像与远程图像 – 本地图像加载速度更快,可靠性更高;远程图像则依赖于外部服务器。
  4. 优化性能 – 压缩图片,使用描述性文件名,并优先选择本地托管,以提高速度和搜索引擎优化效果。

HTML 背景图片

除了使用<img>标记显示图像外,您还可以使用 CSS 以其他方式处理图像,例如设置背景图片。背景图片主要用于装饰目的,例如添加纹理、渐变或图案,以增强网站的视觉吸引力。要在 HTML 中添加背景图片,可以使用

整个页面的背景图像

如果要为整个网页添加背景图片,可以在 <style> 元素内的 <body> 元素上设置 CSS background-image 属性。默认情况下,如果背景图片小于指定元素(本例中为 <body>元素),则会重复显示:

 1<html>
 2	<head>
 3		<style>
 4			body {
 5				background-image: url("lioness.png");
 6			}
 7		</style>
 8	</head>
 9	<body>
10		<h1>Background Image for an Entire Page</h1>
11	</body>
12</html>

如果希望背景图片覆盖整个元素,可以将 background-size 属性设置为 cover

1body {
2  background-image: url("lioness.png");
3  background-size: cover;
4}

要避免重复背景图像,请将 background-repeat 属性设置为 no-repeat

1body {
2  background-image: url("lioness.png");
3  background-repeat: no-repeat;
4}

下图展示了三个电脑屏幕(缩小),其背景图片是使用默认设置下的 background-image 属性(a)、“background-size: cover”(b)和 “background-repeat: no-repeat”(c)属性添加的:

文本 “三个电脑屏幕,背景图像重复出现(a),其中一个图像覆盖全屏(b),图像大小各异”。

注意: 背景图片纯粹是装饰性的,不需要altwidthheight等属性,因为它们不是实际页面内容的一部分。与使用 <img> 标签插入的图片不同,背景图片不会向用户传达有意义的信息,屏幕阅读器也无法读取,因此在无障碍访问方面无需使用 alt 属性。此外,背景图片的尺寸由 CSS 控制,因此无需明确定义 widthheight

HTML 元素的背景图像

HTML 元素的背景图像是通过 CSS 的 background-image 属性指定的,它可以应用于 pdivbodysection 等元素。您可以使用 background-position 控制背景图片的位置,使用 background-size 调整缩放比例,并使用 background-repeat 提高响应速度。

下面的例 1 展示了如何使用 style 属性和 background-image CSS 属性为 <p> 元素添加背景图片:

示例 1

1<p style="background-image: url('winter.png'); "> A background image for an HTML element is set using CSS with the background-image property...</p>

下面的示例 2 展示了如何使用文档中 <head><style> 元素和 background-image CSS 属性为 <div> 元素添加背景图片:

示例 2

 1<html>
 2	<head>
 3		<style>
 4			div {
 5				background-image: url("winter.png");
 6			}
 7		</style>
 8	</head>
 9    <body>
10		<h1>HTML Background Images</h1>
11		<div>
12			<h2>Background Image for an HTML Element</h2>
13			<p> A background image for an HTML element is set using CSS with the background-image property, allowing you to apply images to elements like div, body, or section... </p>
14			<br>
15		</div>
16	</body>
17</html>

下图显示了示例 1 和示例 2 的渲染结果:使用 style 属性为 <p> 元素添加背景图片 (a);使用 <style> 元素添加背景图片并应用于 <div> 元素 (b)。

文本 “两张图片,粉色背景上有  和  元素的文本,白色雪花”。

总结

1.在网页设计中,如果需要在不影响文档结构的情况下装饰视觉效果,背景图片就非常有用。 2. 使用 CSS 的 background-image 属性可为 <body><div><p>等元素添加图像。这可以在元素的 style 属性、<style> 块或外部 CSS 文件中内嵌完成。 3. 不需要 alt 属性。背景图片是装饰性的,不是内容的一部分,因此不需要altwidthheight属性。无障碍工具不会读取它们。 4. 背景图片会拖慢页面加载速度,尤其是在图片较大或未优化的情况下。为提高性能,请使用 WebP 等现代图片格式,以获得更好的压缩效果。

通过 JavaScript 添加图像

对于静态内容来说,使用 <img> 标记更简单,但如果需要动态添加或修改图像,JavaScript 则是更好的选择。

 1<html>
 2	<body>
 3		<h1>Adding Image via JavaScript</h1>
 4		<script>
 5			// Create a new image element
 6			let img = document.createElement("img");
 7
 8			// Set the image source
 9			img.src = "https://docs.aspose.com/svg/images/api/lioness.jpg";
10
11			// Set alternative text, width and height for accessibility and SEO
12			img.alt = "The muzzle of a lioness close-up. The lioness looks away.";
13			img.width = 350;
14			img.height = 200;
15
16			// Append the image to the body
17			document.body.appendChild(img);
18		</script>
19	</body>
20</html>

对于静态内容来说,使用 <img> 标签比较简单,而当需要动态添加或修改图片时,JavaScript 则是更好的选择。通过 JavaScript 添加图片可以实现有条件加载和懒加载,从而提高性能和灵活性。与静态的 <img> 标记不同,这种方法允许在交互式应用程序中进行错误处理、实时更新和更好的可维护性。

使用内联 SVG 绘制矢量图

在 HTML 中使用内嵌 SVG,可以直接在文档中嵌入可缩放的矢量图形,而无需外部图像文件。由于 SVG 与分辨率无关,因此在所有尺寸的屏幕上都能保持清晰,是图标、徽标和复杂图形的理想选择。

 1<html>
 2	<head>
 3		<style>
 4			.page {
 5				width: 160mm;
 6				height: 90mm;
 7				border: 2px solid #026dc5;
 8				text-align: center;
 9			}
10			h1,p {
11				color: #054c87;
12			}
13		</style>
14	</head>
15	<body>
16		<div class="page">
17			<h1>Using Inline SVG as image in HTML</h1>
18			<p>Because SVGs are resolution-independent, they remain crisp on screens of all sizes, making them ideal for icons, logos, and complex graphics...</p>
19			<svg height="140" width="140" viewBox="-40 0 140 140" xmlns="http://www.w3.org/2000/svg">
20				<path d="M 25 78  C -26 28  97 -15  98 91 C 86 34 16 33 25 78" fill="#3993c9"/>
21				<path d="M 25 78  C -26 28  97 -15  98 91 C 86 34 16 33 25 78"  fill="#f3622a" transform= "rotate(90 30 64) translate(5 -14)"/>
22				<path d="M 25 78  C -26 28  97 -15  98 91 C 86 34 16 33 25 78"  fill="#c1af2c" transform= "rotate(180 25 78) translate(-19 9)"/>
23				<path d="M 25 78  C -26 28  97 -15  98 91 C 86 34 16 33 25 78"  fill="#499c43" transform= "rotate(-90 25 78) translate(-5 14)"/>
24				<circle cx="34.5" cy="73.5" r="40"   fill="white" fill-opacity="0.3" />
25			</svg>
26		</div >
27	</body>
28</html>

下图展示了上面编写的 HTML 文件。该文件使用了嵌入式 SVG,即 Aspose 公司的徽标:

文本 “来自 h1 和 p 元素的文本以及下方的 Aspose 徽标”。

另见

Close
Loading

Analyzing your prompt, please hold on...

An error occurred while retrieving the results. Please refresh the page and try again.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.