CSS transform perspective rotateX with transition rapidly hover in out 故障
CSS transform perspective rotateX with transition rapidly hover in out glitch
这是我的代码。
.ground {
height: 250px;
width: 250px;
background-color: tomato;
margin: 50vh auto;
transform: translateY(-50%);
}
.floor-1 {
height: 100%;
width: 100%;
background-color: turquoise;
transition: transform 3s;
}
.floor-1:hover {
transform-origin: left center;
transform: perspective(50em) rotateX(180deg);
}
<div class="ground">
<div class="floor-1">Hello</div>
</div>
现在,当我尝试将鼠标悬停进出 5-10 次是 2-3 秒时,它给我带来了奇怪的行为。 Div 1 楼快要从屏幕上出来了。为什么会发生这种情况以及如何解决?
您最初需要在元素上设置 persepctive
,否则这个元素也会有过渡,从而产生您正在获得的不良效果。 transform-origin
.
同样的事情
.ground {
height: 250px;
width: 250px;
background-color: tomato;
margin: 50vh auto;
transform: translateY(-50%);
}
.floor-1 {
height: 100%;
width: 100%;
background-color: turquoise;
transition: transform 3s;
transform-origin: left center;
transform: perspective(50em) rotateX(0deg);
}
.floor-1:hover {
transform: perspective(50em) rotateX(180deg);
}
<div class="ground">
<div class="floor-1">Hello</div>
</div>
您还可以在父元素上添加透视:
.ground {
height: 250px;
width: 250px;
background-color: tomato;
margin: 50vh auto;
transform: translateY(-50%);
perspective:50em;
perspective-origin:left center;
}
.floor-1 {
height: 100%;
width: 100%;
background-color: turquoise;
transition: transform 3s;
transform: rotateX(0deg);
}
.floor-1:hover {
transform: rotateX(180deg);
}
<div class="ground">
<div class="floor-1">Hello</div>
</div>
这是我的代码。
.ground {
height: 250px;
width: 250px;
background-color: tomato;
margin: 50vh auto;
transform: translateY(-50%);
}
.floor-1 {
height: 100%;
width: 100%;
background-color: turquoise;
transition: transform 3s;
}
.floor-1:hover {
transform-origin: left center;
transform: perspective(50em) rotateX(180deg);
}
<div class="ground">
<div class="floor-1">Hello</div>
</div>
现在,当我尝试将鼠标悬停进出 5-10 次是 2-3 秒时,它给我带来了奇怪的行为。 Div 1 楼快要从屏幕上出来了。为什么会发生这种情况以及如何解决?
您最初需要在元素上设置 persepctive
,否则这个元素也会有过渡,从而产生您正在获得的不良效果。 transform-origin
.
.ground {
height: 250px;
width: 250px;
background-color: tomato;
margin: 50vh auto;
transform: translateY(-50%);
}
.floor-1 {
height: 100%;
width: 100%;
background-color: turquoise;
transition: transform 3s;
transform-origin: left center;
transform: perspective(50em) rotateX(0deg);
}
.floor-1:hover {
transform: perspective(50em) rotateX(180deg);
}
<div class="ground">
<div class="floor-1">Hello</div>
</div>
您还可以在父元素上添加透视:
.ground {
height: 250px;
width: 250px;
background-color: tomato;
margin: 50vh auto;
transform: translateY(-50%);
perspective:50em;
perspective-origin:left center;
}
.floor-1 {
height: 100%;
width: 100%;
background-color: turquoise;
transition: transform 3s;
transform: rotateX(0deg);
}
.floor-1:hover {
transform: rotateX(180deg);
}
<div class="ground">
<div class="floor-1">Hello</div>
</div>