这工作完全在Chrome和平滑地改变图标,但在iOS的Safari浏览器(也可能是桌面Safari浏览器),它确实他们为了,等到对方做下一个之前完成:为什么iOS Sfari会一个接一个地运行这个CSS转换的多重转换?
Safari的转型:
- 是否转动,直到完全
- 是否翻译(X,Y)
这是个非常可怜的动画。在Chrome中,它全部在同一时间完成。
有没有办法强制在Safari?
https://jsfiddle.net/6nju07s8/
HTML:
<div class="error" id="outer">
<div class="line left">
</div>
<div class="line right">
</div>
</div>
CSS:
#outer,body,html
{
width: 100%;
height: 100%
}
.line {
position: absolute;
top: 50%;
left: 50%;
width: 2.5rem;
height: .375rem;
background-color: red;
-webkit-transform: translate(-50%,-50%) rotate(45deg);
-ms-transform: translate(-50%,-50%) rotate(45deg);
transform: translate(-50%,-50%) rotate(45deg);
-webkit-transition: transform 250ms;
transition: transform 250ms;
-webkit-transition-timing-function: ease-in-out;
transition-timing-function: ease-in-out;
}
.line.right {
-webkit-transform: translate(-50%,-50%) rotate(-45deg);
-ms-transform: translate(-50%,-50%) rotate(-45deg);
transform: translate(-50%,-50%) rotate(-45deg);
}
.info .line {
width: .375rem;
height: .375rem;
-webkit-transform: translate(-50%,-50%) translateY(-1.0625rem);
-ms-transform: translate(-50%,-50%) translateY(-1.0625rem);
transform: translate(-50%,-50%) translateY(-1.0625rem);
background-color: blue;
}
.info .line.right {
width: 1.75rem;
height: .375rem;
-webkit-transform: translate(-50%,-50%) translateY(.4375rem) rotate(90deg);
-ms-transform: translate(-50%,-50%) translateY(.4375rem) rotate(90deg);
transform: translate(-50%,-50%) translateY(.4375rem) rotate(90deg);
background-color: blue;
}
JS(可选):
var outer = document.querySelector("#outer");
outer.onclick = function()
{
if (outer.className === "info") { outer.className = "error"; }
else outer.className = "info";
}
我不能在Safari浏览器进行测试,但也许你“,如果你转换你的变换平移,旋转等......以矩阵就会较幸运。你可以在网上找到很好的工具。 [这里很酷](http://ds-overdesign.com/transform/matrix3d.html) – scraaappy