网页中一些小细节往往能提升用户体验,比如让一个图标轻轻上下浮动,像是在呼吸,或是让提示框微微弹动吸引注意。这种效果不夸张,但能让页面显得更生动。实现这样的动效,其实不需要借助JavaScript,纯CSS就能搞定。
基本思路:利用@keyframes定义动画
CSS动画的核心是 @keyframes 规则,它可以定义动画过程中某个属性的变化。要实现上下浮动,关键是让元素的 transform 属性在垂直方向上来回移动。
<style>
.float-animation {
animation: float 2s ease-in-out infinite;
}
@keyframes float {
0% {
transform: translateY(0);
}
50% {
transform: translateY(-10px);
}
100% {
transform: translateY(0);
}
}
</style>
<div class="float-animation">我会上下浮动</div>
上面这段代码中,translateY(-10px) 表示向上移动10像素,然后回到原位,形成一个循环。通过设置 infinite,动画会无限重复,看起来就像在轻轻漂浮。
调整节奏和幅度更自然
实际使用时,浮动太生硬会显得假。可以尝试修改动画时长、缓动函数,或者加入轻微旋转,模拟真实物体漂浮的感觉。
@keyframes gentle-float {
0% {
transform: translateY(0) rotate(0deg);
}
50% {
transform: translateY(-8px) rotate(1deg);
}
100% {
transform: translateY(0) rotate(-1deg);
}
}
.gentle-float {
animation: gentle-float 3s ease-in-out infinite;
}
比如,一个购物网站的“新品推荐”标签,加上这种微浮动效果,用户一进页面就会被悄悄吸引过去。又或者APP下载按钮轻轻上浮,像在说“点我点我”,既不打扰,又增加了点击欲望。
别忘了兼容性和性能
使用 transform 做位移是性能友好的,因为浏览器会将其优化为合成层处理,不会触发重排。同时,现代浏览器对 @keyframes 支持良好,基本不用担心兼容问题。
如果想只在悬停时触发浮动,也可以去掉 infinite,改用 :hover 控制:
.hover-float:hover {
animation: float 0.6s ease-out;
}
这样鼠标放上去才动一下,适合用在图标或链接上,增加交互反馈。
一个小动画,不需要复杂逻辑,却能让页面多一点灵气。下次设计时,不妨试试让某个元素“飘”起来。