在CSS中让一个元素同时产生位移、缩放、变色等效果,关键在于对多个属性分别声明动画规则,而不是只写一条笼统的过渡。下面先看一个基础示例。

使用transition实现多属性过渡
transition属性支持同时监听多个样式属性,每个属性可用逗号隔开单独配置时间和缓动曲线。
.box {
width: 100px;
height: 100px;
background: #3498db;
/* 多属性组合:宽、背景色、变换分别设置 */
transition: width 0.4s ease, background-color 0.6s linear, transform 0.4s ease-in-out;
}
.box:hover {
width: 200px;
background-color: #e74c3c;
transform: translateX(50px) scale(1.2);
}
上述代码中,鼠标悬停时盒子会同时变宽、变红并向右放大移动,三个属性各自按设定节奏变化。
使用keyframes编排复杂组合动画
当多属性变化需要更精确的关键帧控制时,可使用@keyframes为不同属性定义同一时间轴上的状态。
@keyframes multiMove {
0% {
opacity: 0;
transform: translateY(0);
background-color: #3498db;
}
50% {
opacity: 0.5;
transform: translateY(-20px);
background-color: #9b59b6;
}
100% {
opacity: 1;
transform: translateY(0);
background-color: #e74c3c;
}
}
.card {
animation: multiMove 2s infinite;
}
常见误区与优化建议
- 避免对left、top等触发重排的属性做动画,优先使用transform和opacity。
- 多属性动画时注意时长协调,否则容易出现节奏错位。
- 使用will-change提示浏览器提前优化合成层。
性能对比参考
| 属性组合 | 是否触发重排 | 推荐程度 |
|---|---|---|
| transform + opacity | 否 | 高 |
| width + height | 是 | 低 |
配合will-change写法
.smooth {
will-change: transform, opacity;
transition: transform 0.3s, opacity 0.3s;
}
掌握多属性组合动画后,界面交互会显得更生动且专业。核心就是分清属性特性、写好逗号分隔规则并关注渲染性能。
CSS动画多属性组合transition修改时间:2026-07-26 08:18:09