我似乎无法使用all
属性为transition
属性创建透视来源的动画。如何特别转换透视原点?
此代码工作在Safari:
var sceneDiv = document.getElementsByClassName("scene")[0];
sceneDiv.style.perspectiveOrigin = "100% 0%";
sceneDiv.style.transition = "all 1s";
此代码不:
var sceneDiv = document.getElementsByClassName("scene")[0];
sceneDiv.style.perspectiveOrigin = "100% 0%";
sceneDiv.style.transition = "perspective-origin 1s";
function reset()
{
var sceneDiv = document.getElementsByClassName("scene")[0];
sceneDiv.style.perspectiveOrigin = "50% 50%";
sceneDiv.style.transition = "none";
}
function transitionAll()
{
var sceneDiv = document.getElementsByClassName("scene")[0];
sceneDiv.style.perspectiveOrigin = "10% 50%";
/* this works ok, but using "all" affects performance */
sceneDiv.style.transition = "all 1s";
}
function transitionPO()
{
var sceneDiv = document.getElementsByClassName("scene")[0];
sceneDiv.style.perspectiveOrigin = "10% 50%";
/* this doesn't animate the object as expected */
sceneDiv.style.transition = "perspective-origin 1s";
}
.scene
{
width: 400px;
height: 300px;
background: #404040;
-webkit-perspective: 600px;
-moz-perspective: 600px;
-ms-perspective: 600px;
-o-perspective: 600px;
perspective: 600px;
}
.object
{
position: absolute;
margin-left: -200px;
margin-top: -200px;
left: 50%;
top: 50%;
width: 400px;
height: 400px;
background: #ff8000;
-webkit-transform: translateZ(-1200px) rotateX(60deg);
-moz-transform: translateZ(-1200px) rotateX(60deg);
-ms-transform: translateZ(-1200px) rotateX(60deg);
-o-transform: translateZ(-1200px) rotateX(60deg);
transform: translateZ(-1200px) rotateX(60deg);
}
<div class="scene">
<div class="object"></div>
</div>
<button onclick="reset()">reset</button>
<button onclick="transitionAll()">all 1s</button>
<button onclick="transitionPO()">perspective-origin 1s</button>
我想避免使用all
来提高性能。我在第二套指令中做了什么错误?
编辑
我试着用在JavaScript WebKit的扩展。同样的结果。
在我的Chrome这两部作品?你使用哪个浏览器? – weBBer
啊,好的。我正在使用Safari。也许我需要在JavaScript中使用webkit属性。我现在就试一试。 – DaiBu
Nah。同样的结果。 – DaiBu