CSS transform-origin无法按预期工作

时间:2017-01-11 19:30:53

标签: html css css3

我正在尝试在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>

1 个答案:

答案 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