如何在一个元素上有多个CSS过渡?

动画 CSS

L神无Mandy

2020-03-23

这是一个非常简单的问题,但是我找不到关于CSS过渡属性的很好的文档。这是CSS代码段:

    .nav a
{
    text-transform:uppercase;
    text-decoration:none;
    color:#d3d3d3;
    line-height:1.5 em;
    font-size:.8em;
    display:block;
    text-align:center;
    text-shadow: 0 -1.5em 0 rgba(255, 255, 255, 0.15);
    -webkit-transition: color .2s linear;
    -moz-transition: color .2s linear;
    -o-transition: color .2s linear;
    transition: color .2s linear;
    -webkit-transition: text-shadow .2s linear;
    -moz-transition: text-shadow .2s linear;
    -o-transition: text-shadow .2s linear;
    transition: text-shadow .2s linear;
}

.nav a:hover
{
    color:#F7931E;
    text-shadow: 0 1.5em 0 rgba(247, 147, 30, 0.15);
}

如您所见,过渡属性相互覆盖。就目前而言,文本阴影将设置动画,但颜色将不设置动画。如何让它们同时进行动画处理?感谢您的任何答案。

第2723篇《如何在一个元素上有多个CSS过渡?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

7个回答
Sam卡卡西 2020.03.23

也可以避免完全指定属性。

#box {
  transition: 0.4s;
  position: absolute;
  border: 1px solid darkred;
  bottom: 20px; left: 20px;
  width: 200px; height: 200px;
  opacity: 0;
}

#box.on {
  opacity: 1;
  height: 300px;
  width: 500px;
 }
小宇宙泡芙 2020.03.23

这是一个LESS mixin,用于一次转换两个属性:

.transition-two(@transition1, @transition1-duration, @transition2, @transition2-duration) {
 -webkit-transition: @transition1 @transition1-duration, @transition2 @transition2-duration;
    -moz-transition: @transition1 @transition1-duration, @transition2 @transition2-duration;
      -o-transition: @transition1 @transition1-duration, @transition2 @transition2-duration;
          transition: @transition1 @transition1-duration, @transition2 @transition2-duration;
}
逆天小小 2020.03.23

可以使用持续时间,延迟和计时功能的不同值设置多个转换。要拆分不同的过渡,请使用,

button{
  transition: background 1s ease-in-out 2s, width 2s linear;
  -webkit-transition: background 1s ease-in-out 2s, width 2s linear; /* Safari */
}

参考:https : //kolosek.com/css-transition/

斯丁前端 2020.03.23

您还可以简单地通过以下方式显着地:

.nav a {
    -webkit-transition: all .2s;
}
宝儿 2020.03.23

类似以下内容将允许同时进行多个转换:

-webkit-transition: color .2s linear, text-shadow .2s linear;
   -moz-transition: color .2s linear, text-shadow .2s linear;
     -o-transition: color .2s linear, text-shadow .2s linear;
        transition: color .2s linear, text-shadow .2s linear;

示例:http//jsbin.com/omogaf/2

神无 2020.03.23

如果将所有属性设置为相同的动画,则可以分别设置每个属性,这样就不必重复代码。

 transition: all 2s;
 transition-property: color, text-shadow;

这里有更多相关信息:具有多个属性的CSS过渡简写?

我会避免使用all属性(过渡属性会覆盖“ all”),因为您最终可能会遇到不良行为和意外的性能损失。

Stafan小胖 2020.03.23

在所有支持转换的浏览器中,转换属性以逗号分隔:

.nav a {
  transition: color .2s, text-shadow .2s;
}

ease是默认的计时功能,因此您不必指定它。如果确实需要linear,则需要指定它:

transition: color .2s linear, text-shadow .2s linear;

这开始变得重复,因此,如果要在多个属性中使用相同的时间和计时功能,则最好继续使用各种transition-*属性,而不是简写形式:

transition-property: color, text-shadow;
transition-duration: .2s;
transition-timing-function: linear;

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android