我正在尝试在CSS中创建一个可以正常工作的翻转效果,但我想让div向下翻转,这样动画的中心点就是底边。
我认为transform-origin: 0 100%;
会为我创造所需的效果,但这不太对劲。我创建了显示问题的this JSFiddle。注意到红色底部的底边在翻转之前是如何抬起的。有谁知道如何纠正这个?
此处还有我的HTML和CSS供参考
#f1_container {
position: relative;
width: 200px;
height: 100px;
z-index: 1;
}
#f1_container {
perspective: 1000;
}
.thing {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #ffffff;
}
#f1_card {
width: 100%;
height: 100%;
transform-style: preserve-3d;
transition: all 1.0s linear;
}
#f1_container:hover #f1_card {
transform: rotateX(180deg);
transform-origin: 0 100%;
}
.face {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden;
background-color: red;
}
.face.back {
display: block;
transform: rotateX(180deg);
box-sizing: border-box;
padding: 10px;
color: white;
text-align: center;
background-color: #aaa;
}
<div id="f1_container">
<div class="thing">
<p>This is some text</p>
</div>
<div id="f1_card">
<div class="front face">
</div>
<div class="back face center">
<p>This is nice for exposing more information about an image.</p>
</div>
</div>
</div>
答案 0 :(得分:4)
将transform-origin
属性移至#f1_card
选择器。
#f1_card {
width: 100%;
height: 100%;
transform-style: preserve-3d;
transition: all 1.0s linear;
transform-origin: 0 100%;
}
https://jsfiddle.net/325d8m57/1/
在您的代码中,您只在悬停时更改了transform-origin。所以它从50% 50%
(默认值)转换为0% 100%
,因为您在all
属性中使用了transition
。