核心思路
主要有两种方式:

- 使用
<button>:语义上最正确,专门用于创建可交互的按钮,图片作为按钮内容的一部分。 - 使用
<a>:用于创建超链接按钮,图片作为链接内的内容。
使用 <button> 标签(推荐)
这是最符合 HTML 语义的做法,专门用于表单提交或触发 JavaScript 事件。
使用 <img> 标签直接嵌入图片
这是最简单直接的方法,图片会显示在按钮内部,与文字可以并存。
代码示例:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">带图片的按钮</title>
<style>
/* 简单美化一下按钮 */
button {
padding: 10px 15px; /* 内边距 */
font-size: 16px;
cursor: pointer; /* 鼠标悬停时显示手型 */
border: 1px solid #ccc;
border-radius: 5px;
background-color: #f0f0f0;
}
button:hover {
background-color: #e0e0e0;
}
</style>
</head>
<body>
<h1>使用 <button> 标签</h1>
<!-- 示例1:只有图片 -->
<button>
<img src="https://via.placeholder.com/30x30.png?text=图标" alt="搜索图标">
</button>
<!-- 示例2:图片和文字 -->
<button>
<img src="https://via.placeholder.com/20x20.png?text=📁" alt="文件夹图标" style="vertical-align: middle; margin-right: 5px;">
打开文件
</button>
<!-- 示例3:多张图片和文字 -->
<button>
<img src="https://via.placeholder.com/20x20.png?text=🔄" alt="刷新图标" style="vertical-align: middle; margin-right: 5px;">
<img src="https://via.placeholder.com/20x20.png?text=⚙️" alt="设置图标" style="vertical-align: middle; margin-right: 5px;">
刷新并设置
</button>
</body>
</html>
说明:

<button>...`: 定义按钮。<img src="..." alt="...">: 在按钮内部嵌入图片。style="vertical-align: middle; margin-right: 5px;": 这是 CSS 样式,用于调整图片的对齐方式和间距,让它在按钮中看起来更美观。
使用 CSS background-image 属性
当按钮的图片主要是作为背景,并且不需要被屏幕阅读器等辅助技术识别时,可以使用 CSS 背景图。
代码示例:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">CSS背景图片按钮</title>
<style>
.btn-icon {
/* 按钮基本样式 */
padding: 10px 15px;
font-size: 16px;
cursor: pointer;
border: 1px solid #007bff;
border-radius: 5px;
color: white;
background-color: #007bff;
/* 背景图片相关样式 */
background-image: url('https://via.placeholder.com/20x20.png?text=📧');
background-repeat: no-repeat; /* 不重复平铺 */
background-position: 10px center; /* 图片在水平10px,垂直居中的位置 */
background-size: 20px 20px; /* 图片大小 */
/* 为了给背景图留出空间,增加左内边距 */
padding-left: 40px;
}
.btn-icon:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<h1>使用 CSS background-image</h1>
<button class="btn-icon">发送邮件</button>
</body>
</html>
说明:
background-image: 设置按钮的背景图片。background-position: 控制图片在按钮内的位置。background-size: 控制图片的尺寸。padding-left: 因为图片在左侧,所以需要增加左内边距,防止文字被图片覆盖。
使用 <a> 标签(用于链接按钮)
如果你想让按钮点击后跳转到另一个页面,应该使用 代码示例: 说明: 给你的建议:<a>
<img> 标签嵌入
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">链接按钮</title>
<style>
a {
text-decoration: none; /* 去掉链接的下划线 */
}
.link-btn {
display: inline-block; /* 让 a 标签可以设置宽高和内边距 */
padding: 10px 15px;
font-size: 16px;
color: white;
background-color: #28a745;
border-radius: 5px;
cursor: pointer;
}
.link-btn:hover {
background-color: #218838;
}
</style>
</head>
<body>
<h1>使用 <a> 标签</h1>
<!-- 示例1:只有图片的链接按钮 -->
<a href="https://www.example.com" class="link-btn">
<img src="https://via.placeholder.com/30x30.png?text=Logo" alt="Example Logo">
</a>
<!-- 示例2:图片和文字的链接按钮 -->
<a href="https://www.example.com/about" class="link-btn">
<img src="https://via.placeholder.com/20x20.png?text=ℹ️" alt="信息图标" style="vertical-align: middle; margin-right: 5px;">
关于我们
</a>
</body>
</html>
<a href="...">...</a>: 定义一个超链接。class="link-btn": 我们通过 CSS 类来美化这个链接,让它看起来像一个按钮。display: inline-block;: 这是一个关键样式,它让 <a> 标签既能像行内元素一样排列,又能设置宽、高、内边距等块级元素的样式。
总结与推荐
方法
适用场景
优点
缺点
<button> + <img>推荐,用于表单提交、触发 JS 功能、作为纯粹的交互按钮。
语义正确,可访问性好(
alt 属性有意义),易于与文字混合。需要用 CSS 控制图片和文字的间距。
<button> + background-image图片作为纯粹的装饰性背景,不需要被辅助技术识别。
可以轻松控制图片位置、重复等,不影响按钮内容布局。
可访问性较差(屏幕阅读器可能读不出图片内容),修改内容需要改 CSS。
<a> + <img>用于创建一个外观像按钮的超链接。
语义清晰(表示一个链接),易于实现。
如果不是用于链接,使用
<a> 标签是不正确的。
<button>,并在其中嵌入 <img>,这是最通用、最标准的方法。<a>,并应用按钮的 CSS 样式。background-image 来创建带图标的按钮,除非你非常确定图片的装饰性大于其信息性,并且不关心其可访问性。
