HTML
<div class="tooltip"></div>
CSS
.tooltip {
position: relative;
display: inline-block;
width: 50px;
height: 50px;
}
.tooltip::before {
content: ""; /* 必须设置 content 才能显示伪元素 */
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-image: url('https://via.placeholder.com/50'); /* 替换为你的图片链接 */
background-size: cover; /* 图片填充伪元素 */
background-position: center;
z-index: 1;
}
.tooltip::after {
content: "提示文字"; /* 提示内容 */
position: absolute;
top: calc(100% + 5px); /* 提示文字在图片下方 */
left: 50%;
transform: translateX(-50%);
visibility: hidden; /* 默认隐藏 */
opacity: 0; /* 默认透明 */
background-color: #333; /* 背景颜色 */
color: #fff; /* 文字颜色 */
padding: 5px 10px;
border-radius: 4px;
white-space: nowrap;
z-index: 2; /* 确保在图片之上 */
transition: opacity 0.3s ease;
}
.tooltip:hover::after {
visibility: visible; /* 鼠标悬停时显示提示文字 */
opacity: 1;
}
效果说明
- 图片展示:
::before
伪元素通过background-image
设置图片,伪元素尺寸与父元素保持一致。
- 提示文字:
::after
伪元素用于显示提示内容,初始状态设置为visibility: hidden
和opacity: 0
。- 悬停时通过父元素的
:hover
触发visibility: visible
和opacity: 1
。
- 定位和样式:
::after
的top: calc(100% + 5px)
将提示文字定位到图片下方。transform: translateX(-50%)
实现水平居中。
拓展功能
-
改变 Tooltip 位置
通过调整::after
的top
或left
,可以将提示文字显示在图片的上方、左侧或右侧。上方显示:
.tooltip::after { top: auto; bottom: calc(100% + 5px); /* 调整到伪元素的上方 */ }
-
添加动画
为提示文字的显示添加更多动画效果:.tooltip::after { transition: opacity 0.3s ease, transform 0.3s ease; transform: translateX(-50%) translateY(-10px); /* 初始位置稍微向上 */ } .tooltip:hover::after { transform: translateX(-50%) translateY(0); /* 鼠标悬停恢复原位置 */ }
这个方案完全基于 CSS,轻量而灵活,非常适合用于需要图片和文字提示的小型交互场景。