在网页交互设计中,鼠标悬停特效是很基础也很实用的功能。通过CSS的hover伪类,可以在用户把鼠标移到元素上面时改变样式,再结合过渡和变换属性,就能做出自然流畅的效果。

一、hover伪类的基本用法
hover是CSS中用来表示鼠标指针悬停在元素上时的状态。写法是在选择器后面加上:hover。例如下面这段代码,鼠标移到按钮上背景色会变成橙色。
.button {
background-color: #3498db;
color: #fff;
padding: 10px 20px;
border: none;
cursor: pointer;
}
/* 鼠标悬停时改变背景 */
.button:hover {
background-color: #e67e22;
}
二、使用transition让变化更平滑
如果直接改颜色会显得生硬,可以加上transition属性定义过渡时间和效果。这样颜色会在指定时间内慢慢变化。
.button {
background-color: #3498db;
color: #fff;
padding: 10px 20px;
border: none;
cursor: pointer;
transition: background-color 0.3s ease;
}
.button:hover {
background-color: #e67e22;
}
三、用transform实现放大和位移
transform属性可以对元素进行缩放、旋转、移动。配合hover能做到图片放大或者卡片上浮的效果。
1. 图片悬停放大
.img-box {
width: 200px;
overflow: hidden;
}
.img-box img {
width: 100%;
transition: transform 0.4s ease;
}
.img-box:hover img {
transform: scale(1.1);
}
2. 卡片悬停上浮并加阴影
.card {
width: 240px;
padding: 16px;
background: #fff;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.card:hover {
transform: translateY(-8px);
box-shadow: 0 8px 20px rgba(0,0,0,0.15);
}
四、使用animation做复杂动效
如果需要悬停时播放关键帧动画,可以用animation属性。下面例子让文字悬停时左右晃动。
@keyframes shake {
0% { transform: translateX(0); }
25% { transform: translateX(-5px); }
50% { transform: translateX(5px); }
75% { transform: translateX(-5px); }
100% { transform: translateX(0); }
}
.text:hover {
animation: shake 0.4s ease;
}
五、注意事项
- hover在触摸屏设备上不会触发,移动端需要额外处理交互。
- transition和transform要考虑浏览器兼容性,旧版浏览器可能需要前缀。
- 不要对性能影响大的属性如布局属性做频繁过渡,优先使用transform和opacity。
通过上述方法,你可以灵活组合hover、transition、transform和animation,实现丰富的鼠标悬停特效。实际项目中建议先从简单的颜色和位移做起,再逐步加入复杂动画。
CSShovertransitiontransformanimation修改时间:2026-07-25 08:15:13