.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);
}
如您所见,过渡属性相互覆盖。就目前而言,文本阴影将设置动画,但颜色将不设置动画。如何让它们同时进行动画处理?感谢您的回答。
#1 楼
在所有支持转换的浏览器中,转换属性均以逗号分隔:.nav a {
transition: color .2s, text-shadow .2s;
}
是默认的计时功能,因此您不必指定它。如果您确实需要ease
,则需要指定它:跨多个属性的函数,最好继续使用各种linear
属性,而不是简写形式:transition: color .2s linear, text-shadow .2s linear;
评论
我假设因为转换是顺序重要的链,所以如果您习惯了功能链,那么语法会很不错,而过渡则需要一个无序的完全独立元素列表,因此逗号是合适的
– mirichan
16 Mar 10 '16 at 13:36
作为关于CSS过渡的一般性评论,应该记住,一个接一个的多个过渡定义将不起作用,并且要实现这一点,这些定义必须具有相同的定义(如此处的SA)。根据CSS的基本规则,“最新”规则适用,因此,如果在单独的行中有多个定义,则仅应用最后一个定义。费耶
–TheCuBeMan
18年8月15日在7:30
#2 楼
您还可以通过以下方式显着地实现:.nav a {
transition: all .2s;
}
评论
实际上,您可以删除“全部”,因为除非另有说明,否则这是默认设置。
– joshnh
2012年9月8日于7:07
+1是一个很好的观点,但我认为将其保留在其中非常有用,特别是对于团队之间的一致性和理解。
– XML
2012年10月2日23:07
当心!如果针对移动设备进行开发,则结合硬件加速元素会使新设备出现故障,而旧设备将无法使用。
–伊利亚·卡诺霍夫(Ilya Karnaukhov)
2014年9月19日上午11:09
谢谢,@CanerŞahin。您能给我们提供任何文档或基准测试工具来帮助人们理解这一点吗?另外,您是否看到证据表明“全部”要比根本不使用任何说明符更糟糕?
– XML
2014年11月18日在22:48
@XML的解释方式有两个负面影响。 1,由于使用“ all”,浏览器添加了额外的资源。浏览器将仔细听该元素,等待性能不佳的任何更改,并且可能创建页面垃圾。 2,如果开发人员以后放一个可能会不期望或不需要的背景色,则可以创建意想不到的效果。
– Stefan Burt
17-6-27在9:17
#3 楼
类似以下内容将同时允许多个转换:-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
#4 楼
如果将所有属性设置为相同的动画,则可以分别设置每个属性,这样就不必重复代码了。具有多个属性的过渡速记吗?
我会避免使用属性all(过渡属性会覆盖“ all”),因为您最终可能会遇到不必要的行为和意外的性能损失。
#5 楼
.nav a {
transition: color .2s, text-shadow .2s;
}
#6 楼
这是用于一次转换两个属性的LESS混合:.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;
}
评论
autoprefixer更好!
–重写
2014年12月28日在19:04
自动前缀+手写笔FTW。
–Jason Lydon
15年8月24日在20:58
#7 楼
可以使用持续时间,延迟和计时功能的不同值来设置多个转换。要拆分不同的过渡,请使用,
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/
#8 楼
也可以避免完全指定属性。#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;
}
评论
不要忘记这种过渡:对于safari / ipad来说,一切都很麻烦:joelglovier.com/writing/…