我一直在試圖讓CSS3過渡效果在Chrome和Safari中運行,沒有運氣。正如你在下面的代碼示例中看到的,我使用僞類選擇器觸發一個關鍵幀動畫,在這種情況下,它將div從一個位置移動到另一個位置。只要你點擊另一個鏈接的div消失(它跳回到原來的位置)。Chrome和Safari忽略我的-webkit-transition-
爲了防止這種即時跳躍,我添加了一個過渡效果到div的原始狀態。通過這樣做,過渡將會啓動,div會「滑」回頂端,至少如果您使用的是Firefox或Opera。 Chrome和Safari似乎忽略了過渡效果,我不知道爲什麼?
我從來沒有像以前那樣合併過渡和動畫,所以我可能會錯過什麼?
關於我如何使它在Chrome和Safari中工作的任何想法(最好使用CSS3)?
我使用的是Mac OS X,從Chrome 21,火狐14.0.1和Opera 12.01
這裏有一個jsFiddle和這裏的中的jsfiddle示例中使用的代碼:
的Html
<a href="#id1">One</a>
<a href="#id2">Two</a>
<div id="id1">
Hello hello
</div>
CSS
#id1 {
position: absolute;
top: -100px;
left: 100px;
width: 100px;
height: 100px;
/* Not working */
-webkit-transition-timing-function: linear;
-webkit-transition-duration: 0.5s;
/* Working */
-moz-transition-timing-function: linear;
-moz-transition-duration: 0.5s;
/* Working */
-o-transition-timing-function: linear;
-o-transition-duration: 0.5s;
}
#id1:target {
-webkit-animation: down 0.5s ease-in forwards;
-moz-animation: down 0.5s ease-in forwards;
-o-animation: down 0.5s ease-in forwards;
}
@-webkit-keyframes down {
0% { top: -100px; left: 100px; }
100% { top: 200px; left: 100px; }
}
@-moz-keyframes down {
0% { top: -100px; left: 100px; }
100% { top: 200px; left: 100px; }
}
@-o-keyframes down {
0% { top: -100px; left: 100px; }
100% { top: 200px; left: 100px; }
}
感謝您對平滑過渡建議的回答和+1,以及我如何在代碼中節省空間。 – 2012-08-09 20:44:24
另一個提示。如果您有很多供應商特定的CSS,請考慮使用[前綴免費](http://leaverou.github.com/prefixfree/)。這是一個漂亮的小腳本,可以讓你在沒有前綴的情況下編寫代碼,並在客戶端稍後添加它們。在此特定情況下保存12行代碼。 – 2012-08-09 20:47:47