2013-11-01 147 views
7

嘗試使用具有相同背景圖像的兩個居中的div [svg]製作一個從中心淡入圖像的css動畫,併爲其寬度和背景位置設置動畫。問題是,在Chrome上,有一個可怕的抖動問題(也許從鉻循環通過動畫步驟,而不是同時做它們?)Chrome css動畫抖動

這裏是jsfiddle:http://jsfiddle.net/evankford/s2uRV/4/,在那裏你可以看到左邊的抖動問題(它同時具有寬度動畫和背景位置動畫)。

相關代碼(對不起,從它在該網站的一些吃剩的東西)

HTML:

<div class="underheader-wrapper uhw-title"> 
     <div class="underheader uhleft undertitle">&nbsp;</div> 
     <div class="underheader uhright undertitle">&nbsp;</div> 
    </div> 

和CSS:

.undertitle { 
-webkit-backface-visibility: hidden; 
-webkit-transform: translateZ(0); 
background-image:url(http://cereusbright.com/newsite/presskit/images/underheader.svg); 
} 

.underheader-wrapper { 
position: relative; 
margin: auto; 
width:320px; 
height:100px; 
} 

.underheader { 
-webkit-backface-visibility: hidden; 
position:absolute; 
width: 0px; 
height:100px; 
opacity: 0; 
background-size: 320px 60px; 
background-repeat: no-repeat; 
-moz-animation-delay: 3s; -webkit-animation-delay:3s; 
-moz-animation-duration: 3s; -webkit-animation-duration: 3s; 
-moz-animation-name: part1; -webkit-animation-name:part1; 
-webkit-animation-fill-mode:forwards; 
-moz-animation-fill-mode:forwards} 

.uhleft { 
background-position: -160px 40px; 
right: 160px; 
-webkit-backface-visibility: hidden; 
-moz-animation-delay: 3s; -webkit-animation-delay:3s; 
-moz-animation-duration: 3s; -webkit-animation-duration: 3s; 
-moz-animation-name: part2; -webkit-animation-name:part2; 
-webkit-animation-fill-mode:forwards; 
-moz-animation-fill-mode:forwards} 

.uhright { 
background-position: -160px 40px; 
left: 160px;} 

@-webkit-keyframes part1 { 
from { 
    width: 0px; 
    opacity: 0; 
} 
to { 
    width: 160px; 
    opacity: 1; 
}} 

@-webkit-keyframes part2 { 
from { 
    background-position:-160px 40px; 
    width: 0px; 

    opacity: 0; 
} 
to { 
    width: 160px; 
    background-position: 0px 40px; 
    opacity: 1; 
}} 

@-moz-keyframes part1 { 
from { 
    width: 0px; 
    opacity: 0; 
} 
to { 
    width: 160px; 
    opacity: 1; 
}} 

@-moz-keyframes part2 { 
from { 
    background-position:-160px 40px; 
    width: 0px; 
    opacity: 0; 
} 
to { 
    background-position: 0px 40px; 
    width: 160px; 
    opacity: 1; 
}} 

我是不是堅持了這種抖動?我已經做了一個JQuery版本,並發現有人說CSS比較乾淨/平滑,但抖動仍然發生。

回答

1

好的,沒有找到一個方法來使用雙divs來實現這一目標。相反,我做了這樣的事情。

<div class="outer"> 
    <div class="middle"> 
      <div class"inner"> 
      &nbsp 
      </div> 
     </div> 
</div> 

,然後風格他們

.outer { 
position: relative; 
width:321px; 
height:100px; 
padding: 15px; 
} 

.middle { 
text-align: center; 
position: absolute; 
left: 160px; 
margin:auto; 
background-image:url(images/underheader.svg); 
background-position:center center; 
background-size: 320px 70px; 
background-repeat: no-repeat; 
/*all the animation stuff */ 
} 

.inner { 
position: relative; 
display: inline-block; 
width: 0px; 
height: 100px; 
/* all the animation stuff */ 
} 

我則動畫從left:160px中期股利left: 0pxwidth: 0pxwidth: 320px.內的div我用CSS動畫,但它可以很容易地使用jQuery或完成CSS轉換。

0

您在Chrome上看到的延遲由-webkit-animation-delay:3s;給出。將其更改爲-webkit-animation-delay:0s;,您會發現它會立即開始淡入。

+0

即使改爲'-webkit-animation-delay:0s,我仍然可以看到它; – AbdelElrafa