3d 旋转过渡在 Internet Explorer 中的旋转方式不同
Transition with 3d rotation spins differently in Internet Explorer
我制作了一个箭头,使用盒子的两个边框并旋转盒子。单击它时,箭头应指向上方而不是下方,并使用过渡。
在 Chrome/Safari/Firefox 中可以正常工作。然而,在 IE11 中,它会奇怪地旋转。它以正确的方向结束,但到达那里 differently/around 与其他浏览器不同的轴。
button:after {
/* make a box with two borders */
content: "";
border-left: 1.5px solid blue;
border-top: 1.5px solid blue;
transition: all 1s;
width: 10px;
height: 10px;
display: inline-block;
margin-left: 0.5rem;
/* rotate to give illusion of arrows */
transform: rotate(-135deg);
-webkit-transform: rotate(-135deg);
transform-origin: 25% 25%;
-webkit-transform-origin: 25% 25%;
}
/* change direction of arrow */
button.open:after {
transform: rotateX(180deg) rotateZ(-135deg);
-webkit-transform: rotateX(180deg) rotateZ(-135deg);
}
互动范例,点击按钮:
https://jsfiddle.net/b51sctnu/1/
一般来说,让浏览器理解容易的更改是个好主意
在您的情况下,使用 2 个最相似的转换。
因为最后一步是
transform: rotateX(180deg) rotateZ(-135deg);
在初始步骤中使用:
transform: rotateX(0deg) rotateZ(-135deg);
0deg 旋转似乎没用,但匹配最终变换
例如,将新状态更改为悬停状态,以便更轻松地来回移动
button:after {
content: "";
border-left: 1.5px solid blue;
border-top: 1.5px solid blue;
transition: all 1s;
width: 10px;
height: 10px;
display: inline-block;
margin-left: 0.5rem;
-webkit-transform-origin: 25% 25%;
-webkit-transform: rotate(-135deg);
transform-origin: 25% 25%;
transform: rotateX(0deg) rotateZ(-135deg);
}
button:hover:after {
-webkit-transform: rotateX(180deg) rotateZ(-135deg);
transform: rotateX(180deg) rotateZ(-135deg);
}
button {
border: 0px;
background: grey;
padding: 20px;
}
<button>asdasd</button>
我制作了一个箭头,使用盒子的两个边框并旋转盒子。单击它时,箭头应指向上方而不是下方,并使用过渡。
在 Chrome/Safari/Firefox 中可以正常工作。然而,在 IE11 中,它会奇怪地旋转。它以正确的方向结束,但到达那里 differently/around 与其他浏览器不同的轴。
button:after {
/* make a box with two borders */
content: "";
border-left: 1.5px solid blue;
border-top: 1.5px solid blue;
transition: all 1s;
width: 10px;
height: 10px;
display: inline-block;
margin-left: 0.5rem;
/* rotate to give illusion of arrows */
transform: rotate(-135deg);
-webkit-transform: rotate(-135deg);
transform-origin: 25% 25%;
-webkit-transform-origin: 25% 25%;
}
/* change direction of arrow */
button.open:after {
transform: rotateX(180deg) rotateZ(-135deg);
-webkit-transform: rotateX(180deg) rotateZ(-135deg);
}
互动范例,点击按钮: https://jsfiddle.net/b51sctnu/1/
一般来说,让浏览器理解容易的更改是个好主意
在您的情况下,使用 2 个最相似的转换。
因为最后一步是
transform: rotateX(180deg) rotateZ(-135deg);
在初始步骤中使用:
transform: rotateX(0deg) rotateZ(-135deg);
0deg 旋转似乎没用,但匹配最终变换
例如,将新状态更改为悬停状态,以便更轻松地来回移动
button:after {
content: "";
border-left: 1.5px solid blue;
border-top: 1.5px solid blue;
transition: all 1s;
width: 10px;
height: 10px;
display: inline-block;
margin-left: 0.5rem;
-webkit-transform-origin: 25% 25%;
-webkit-transform: rotate(-135deg);
transform-origin: 25% 25%;
transform: rotateX(0deg) rotateZ(-135deg);
}
button:hover:after {
-webkit-transform: rotateX(180deg) rotateZ(-135deg);
transform: rotateX(180deg) rotateZ(-135deg);
}
button {
border: 0px;
background: grey;
padding: 20px;
}
<button>asdasd</button>