2011-08-13 41 views
222

這是一個非常簡單的問題,但我無法在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); 
} 

正如你所看到的,過渡屬性是相互覆蓋的。就目前而言,文字陰影會產生動畫效果,但不是顏色。我如何讓它們同時動畫?感謝任何答案。

回答

389

過渡特性逗號分隔在支持過渡所有瀏覽器:

.nav a { 
    -webkit-transition: color .2s, text-shadow .2s; 
    /* And so on... */ 
} 

易於是默認,所以你不必指定它。如果你真的想要線性,你需要指定它,即-webkit-transition: color .2s linear, text-shadow .2s linear;

+2

爲什麼這個逗號分開但變換不是!來吧標準...... –

+4

我假設因爲變換是一個順序很重要的鏈,所以如果你習慣了功能鏈,那麼語法就會很好,而過渡需要一個完全獨立元素的無序列表,所以逗號是合適的 – mirichan

26

像下面將同時允許多個轉換:

-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

+0

它爲所有的瀏覽器? – devWaleed

33

你也可以簡單地顯著有:

.nav a { 
    -webkit-transition: all .2s; 
} 
+37

你實際上可以刪除'all',因爲這是默認值,除非另有說明。 – joshnh

+12

+1表示出色,但我認爲明確地將其保留在那裏非常有用,特別是爲了保持團隊間的一致性和理解。 – XML

+2

小心這個!如果爲手機開發,再加上硬件加速元件,會使新設備出現問題,舊設備無法使用。 –

1

這裏有一個不太混入,用於轉換一次兩個屬性:

.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; 
} 
+2

嗯,手寫筆好像更好:) http://pastebin.com/FphhtNvH – Pijusn

+0

autoprefixer更好! – rewritten

+0

autoprefixer +手寫筆FTW。 –

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

如果你的所有屬性的動畫一樣,你可以單獨設置每一個,這將允許你不重複代碼。

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

有更多一點的位置:CSS transition shorthand with multiple properties?

我會避免使用所有(過渡屬性將覆蓋「全部」)的財產,因爲你可以用不必要的行爲和意外的性能命中結束。

+0

好提示,更多可讀代碼IMO – Whelkaholism

相關問題