gpt4 book ai didi

css - Edge 中的 rotateY() 与 matrix3d 转换

转载 作者:行者123 更新时间:2023-11-28 06:08:59 28 4
gpt4 key购买 nike

我在 Edge(和 IE 11)处理我的 matrix3d 变换的方式上遇到了一个奇怪的问题。我正在处理的页面包含已经应用了任意变换的元素(由于使用了插件),但是多亏了我的经理,我现在需要在此之上围绕 Y 轴应用 180 度旋转。因此,我不能简单地使用 rotateY() 函数,因为它替换了旧的变换并移动了元素,所以我想我需要使用矩阵。这在 Chrome 和 Firefox 中运行良好,但 Edge 似乎无法以相同的方式处理 matrix3d。

这是一个使用 rotateY 的例子:http://codepen.io/anon/pen/wGqapy

(HTML)

<body>
<div class="flip-container">

<div class="front">
Test
</div>


</div>
</body>

(CSS)

.flip-container,
.front {
width: 320px;
height: 480px;
}

.front {
transition: 0.6s;
position: absolute;
top: 0;
left: 0;
z-index: 2;
background-color: green;
}

.flip-container:hover .front
{
transform: rotateY(180deg);
}

当您将鼠标悬停在元素上时,它会在 3D 空间中绕 Y 轴旋转。这是一个使用 matrix3d 的示例,使用与 Edge 中“计算的 CSS”选项卡中显示的相同矩阵:http://codepen.io/anon/pen/QNMbmV

(HTML)

<body>
<div class="flip-container">

<div class="front">
Test
</div>


</div>
</body>

(CSS)

.flip-container,
.front {
width: 320px;
height: 480px;
}

.front {
transition: 0.6s;
position: absolute;
top: 0;
left: 0;
z-index: 2;
background-color: green;
}

.flip-container:hover .front
{
transform: matrix3d(-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1);
}

然而,这似乎围绕着不止一个轴旋转。这不会发生在 Firefox 或 Chrome 中。我应该使用一些神奇的特定于供应商的 CSS 吗?我一直在搜索 SO 或谷歌不成功,所以我希望有人有一些见识!

提前致谢。

最佳答案

矩阵对于微积分和以通用方式设置变换非常有用。但是,当您从一种状态过渡到另一种状态时,情况就不太好了。

一个简单的动画

from {transform: rotate(0deg);}     
to {transform: rotate(360deg);}

不可能用矩阵设置

另外,考虑到即使使用矩阵,您也可以将它们与其他转换链接起来。

综上所述,让我们看一个在先前转换的元素上进行旋转的示例

.flip-container,

.front {
width: 320px;
height: 480px;
}

.front {
transition: 0.6s;
position: absolute;
top: 0;
left: 0;
z-index: 2;
background-color: green;
/* transform: rotate(10deg); is equivalent to matrix(0.984808, 0.173648, -0.173648, 0.984808, 0, 0) */
transform: matrix(0.984808, 0.173648, -0.173648, 0.984808, 0, 0) rotateY(0deg);
}

.flip-container:hover .front {
transform: matrix(0.984808, 0.173648, -0.173648, 0.984808, 0, 0) rotateY(180deg);
}
<div class="flip-container">
<div class="front">
Test
</div>
</div>

关于css - Edge 中的 rotateY() 与 matrix3d 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36280162/

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