perspective() 问题已解决?
perspective() problems fixed with perspective?
我有一个翻转动画,我使用的是透视图,我有一个简单的卡片,悬停时会翻转。根据我的理解,透视 属性 和变换 属性 perspective() 是相同的,除了透视应用于父级并呈现在其子级上并且 perspective() 直接应用于您想要的元素有远见,这是正确的吗?一开始我使用了透视 属性 然后意识到我可以通过使用 perspective() 稍微简化我的代码所以我改变了它。使用 perspective() 如果您将鼠标悬停在卡片上,动画会起作用,但是如果您在动画开始之前将鼠标关闭并重新打开,您会得到一些奇怪的结果,卡片的背面将显示在前面并且卡片会在屏幕上伸展,当我给卡片一个具有透视图 属性 的父对象并删除透视图()时,所有这些奇怪的行为都会停止,所以这是浏览器错误还是我没有正确理解差异或者是否有其他一些 属性 我需要与我不知道的 perspective() 一起使用?
两个版本 css 结果
视角:1000px;
https://fiddle.jshell.net/rqzwoguw/28/
变换:透视(1000px);
https://fiddle.jshell.net/rqzwoguw/29/ // 在过渡的起点或中间点移动鼠标。
保持透视不变,不要在悬停时改变它。
只需添加到 .card:(无旋转,但与您在悬停时设置的视角相同)
transform: perspective(1000px) rotateY(0deg);
.front,
.back,
.card {
width: 100px;
height: 170px;
border-radius: 10px;
text-align: center;
}
.card {
position: relative;
transition: transform 1s ease-in-out 0s;
transform-style: preserve-3d;
transform-origin: right;
transform: perspective(1000px) rotateY(0deg);
}
.card:hover {
transform: perspective(1000px) rotateY(180deg);
}
.front {
background-color: red;
}
.back {
background-color: blue;
transform: rotateY(180deg);
position: absolute;
top: 0px;
z-index: -1;
}
<div class="card">
<div class="front">
FRONT
</div>
<div class="back">
BACK
</div>
</div>
我有一个翻转动画,我使用的是透视图,我有一个简单的卡片,悬停时会翻转。根据我的理解,透视 属性 和变换 属性 perspective() 是相同的,除了透视应用于父级并呈现在其子级上并且 perspective() 直接应用于您想要的元素有远见,这是正确的吗?一开始我使用了透视 属性 然后意识到我可以通过使用 perspective() 稍微简化我的代码所以我改变了它。使用 perspective() 如果您将鼠标悬停在卡片上,动画会起作用,但是如果您在动画开始之前将鼠标关闭并重新打开,您会得到一些奇怪的结果,卡片的背面将显示在前面并且卡片会在屏幕上伸展,当我给卡片一个具有透视图 属性 的父对象并删除透视图()时,所有这些奇怪的行为都会停止,所以这是浏览器错误还是我没有正确理解差异或者是否有其他一些 属性 我需要与我不知道的 perspective() 一起使用?
两个版本 css 结果
视角:1000px; https://fiddle.jshell.net/rqzwoguw/28/
变换:透视(1000px); https://fiddle.jshell.net/rqzwoguw/29/ // 在过渡的起点或中间点移动鼠标。
保持透视不变,不要在悬停时改变它。
只需添加到 .card:(无旋转,但与您在悬停时设置的视角相同)
transform: perspective(1000px) rotateY(0deg);
.front,
.back,
.card {
width: 100px;
height: 170px;
border-radius: 10px;
text-align: center;
}
.card {
position: relative;
transition: transform 1s ease-in-out 0s;
transform-style: preserve-3d;
transform-origin: right;
transform: perspective(1000px) rotateY(0deg);
}
.card:hover {
transform: perspective(1000px) rotateY(180deg);
}
.front {
background-color: red;
}
.back {
background-color: blue;
transform: rotateY(180deg);
position: absolute;
top: 0px;
z-index: -1;
}
<div class="card">
<div class="front">
FRONT
</div>
<div class="back">
BACK
</div>
</div>