一尘不染

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

css

这是一个非常简单的问题,但是我找不到关于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);
}

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


阅读 325

收藏
2020-05-16

共1个答案

一尘不染

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

.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;
2020-05-16