2012-12-08 94 views
38

考虑以下fiddleCSS3转换和过渡(WebKit的)

p { 
    -webkit-transform: translate(-100%, 0); 
    -moz-transform: translate(-100%, 0); 
     -ms-transform: translate(-100%, 0); 
     -o-transform: translate(-100%, 0); 
      transform: translate(-100%, 0); 
    -webkit-transition: transform 1s ease-in; 
    -moz-transition: transform 1s ease-in; 
     -o-transition: transform 1s ease-in; 
      transition: transform 1s ease-in; 
} 

a:hover + p { 
    -webkit-transform: translate(0, 0); 
    -moz-transform: translate(0, 0); 
     -ms-transform: translate(0, 0); 
     -o-transform: translate(0, 0); 
      transform: translate(0, 0); 
} 

过渡平稳地工作在FF,但没有任何过渡都在Safari或Chrome(在我的Mac)。

是否将transition属性添加到前缀中,或者在我的代码中是否存在某种语法错误?

+0

使用prefixfreejs,让您的生活更轻松 –

回答

94

添加在转换供应商的前缀:

p { 
    -webkit-transform: translate(-100%, 0); 
    -moz-transform: translate(-100%, 0); 
     -ms-transform: translate(-100%, 0); 
     -o-transform: translate(-100%, 0); 
      transform: translate(-100%, 0); 
    -webkit-transition: -webkit-transform 1s ease-in; /* Changed here */ 
    -moz-transition: -moz-transform 1s ease-in; 
     -o-transition: -o-transform 1s ease-in; 
      transition: transform 1s ease-in; 
} 

a:hover + p { 
    -webkit-transform: translate(0, 0); 
    -moz-transform: translate(0, 0); 
     -ms-transform: translate(0, 0); 
     -o-transform: translate(0, 0); 
      transform: translate(0, 0); 
} 

更新(2014年5月6日)

为了回答一些评论,省去-ms-transition的原因,是它从来没有存在过。

检查:

Can I Use? Transitions

Can I Use? Transforms

MDN transitions

MDN transforms

+0

当然我只是说了-webkit-前缀因为你的抱怨是关于Safari和Chrome浏览器。你应该添加-moz-和其他的前缀,但根据你所说的,FF不需要它。 –

+0

是的,很明显,我没有找到任何文件。在我发现的所有资源中,transition属性都是非前缀的。 – gregory

+1

我只知道它必须工作,但我也没有找到任何直接的例子。最接近的是:http://css-infos.net/property/-webkit-transition-property,其中你可以看到必须与CSS规则相同......在这种情况下供应商前缀。干杯 –