gpt4 book ai didi

css - 带有 rotateY 的动画在不同值下看起来相同

转载 作者:行者123 更新时间:2023-11-27 23:00:25 25 4
gpt4 key购买 nike

来自 MDN 的一些文本
rotateY() 创建的旋转量由 .如果为正,则运动将顺时针;如果为负数,则为逆时针方向。

const rotate1 = [
{
transform: `rotateX(0)`
},
{
transform: `rotateY(45deg)`
},
{
transform: `rotateX(0)`
}
];

const rotate2 = [
{
transform: `rotateY(0)`
},
{
transform: `rotateY(-45deg)`
},
{
transform: `rotateY(0)`
}
];

document.getElementById('rotated1').onclick = function(){this.animate(rotate1,1000)}
document.getElementById('rotated2').onclick = function(){this.animate(rotate2,1000)}

document.getElementById('rotated1').animate(rotate1,1000)
document.getElementById('rotated2').animate(rotate2,1000)
div {
width: 180px;
height: 180px;
}

#rotated1 {
background-color: pink;
}

#rotated2 {
background-color: green;
}
<div id="rotated1">click me</div>

<div id="rotated2">click me</div>

请看看这个demo

这让我很困惑..

我期望的是:http://img.htmleaf.com/1610/rotateY-demo.jpg

最佳答案

你需要添加一些视角来获得你想要的:

const rotate1 = [
{
transform: `rotateX(0)`
},
{
transform: `rotateY(45deg)`
},
{
transform: `rotateX(0)`
}
];

const rotate2 = [
{
transform: `rotateY(0)`
},
{
transform: `rotateY(-45deg)`
},
{
transform: `rotateY(0)`
}
];

document.getElementById('rotated1').onclick = function(){this.animate(rotate1,1000)}
document.getElementById('rotated2').onclick = function(){this.animate(rotate2,1000)}

document.getElementById('rotated1').animate(rotate1,1000)
document.getElementById('rotated2').animate(rotate2,1000)
div {
width: 150px;
height: 150px;
margin:5px;
}

#rotated1 {
background-color: pink;
}

#rotated2 {
background-color: green;
}

body {
perspective:200px;
perspective-origin:left center;
margin:0;
min-height:100vh;
}
<div id="rotated1">click me</div>

<div id="rotated2">click me</div>

或者像下面这样:

const rotate1 = [
{
transform: `perspective(200px) rotateX(0)`
},
{
transform: `perspective(200px) rotateY(45deg)`
},
{
transform: `perspective(200px) rotateX(0)`
}
];

const rotate2 = [
{
transform: `perspective(200px) rotateY(0)`
},
{
transform: `perspective(200px) rotateY(-45deg)`
},
{
transform: `perspective(200px) rotateY(0)`
}
];

document.getElementById('rotated1').onclick = function(){this.animate(rotate1,1000)}
document.getElementById('rotated2').onclick = function(){this.animate(rotate2,1000)}

document.getElementById('rotated1').animate(rotate1,1000)
document.getElementById('rotated2').animate(rotate2,1000)
div {
width: 150px;
height: 150px;
margin:5px;
}

#rotated1 {
background-color: pink;
}

#rotated2 {
background-color: green;
}
<div id="rotated1">click me</div>

<div id="rotated2">click me</div>

更多细节的一些相关问题:

perspective and translateZ moves diagonally

CSS 3d transform doesn't work if perspective is set in the end of property

关于css - 带有 rotateY 的动画在不同值下看起来相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59021242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com