通过设置CSS的transition与box-shadow属性,可实现鼠标悬停时元素平滑浮起的动效。首先为.card类定义基础样式及0.3秒阴影过渡,悬停时增大阴影偏移与模糊值模拟立体感,结合transform: translateY(-4px)可增强上抬动画,使交互更生动自然。

当鼠标悬停在元素上时,使用 CSS transition 与 box-shadow 可以创建平滑的光影动效,让界面更具交互感。关键在于设置过渡属性,使阴影变化不突兀。
基础结构:HTML 元素
假设有一个简单的 div 块元素:默认样式与阴影设置
先定义元素的基本样式,并添加初始的 box-shadow 和 transition:
.card {
width: 200px;
height: 120px;
background: #fff;
border-radius: 8px;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
transition: box-shadow 0.3s ease;
display: flex;
align-items: center;
justify-content: center;
margin: 50px auto;
cursor: pointer;
}
这里设置了 0.3 秒的过渡效果,使用 ease 缓动函数,使阴影变化更自然。
悬停状态:增强阴影
当鼠标悬停时,提升阴影层次,模拟“抬起”效果:
立即学习“前端免费学习笔记(深入)”;
.card:hover {
box-shadow: 0 8px 20px rgba(0,0,0,0.15);
}
阴影的偏移和模糊值增大,视觉上像元素浮起,配合 transition 实现流畅动画。
可选优化:同时过渡其他属性
若想更生动,可以同时过渡 transform,比如轻微上抬:
.card {
transition: all 0.3s ease;
}
.card:hover {
box-shadow: 0 8px 20px rgba(0,0,0,0.15);
transform: translateY(-4px);
}
注意:此时 transition 改为 all 或指定多个属性,确保 transform 也被过渡。
基本上就这些。合理使用 box-shadow 与 transition,能让按钮、卡片等组件更有质感,且无需 JavaScript。










