如何创建:3D 翻转盒子

学习如何使用 CSS 创建一个翻转盒子。

翻转盒子

请将鼠标移到下面的盒子上,查看效果:

水平翻转:

正面
背面

亲自试一试

垂直翻转:

正面
背面

亲自试一试

如何创建一个翻转盒子

第一步 - 添加 HTML:

<div class="flip-box">
  <div class="flip-box-inner">
    <div class="flip-box-front">
      <h2>Front Side</h2>
    </div>
    <div class="flip-box-back">
      <h2>Back Side</h2>
    </div>
  </div>
</div>

第二步 - 添加 CSS:

/* 翻盖盒容器 - 设置你想要的宽度和高度。我们添加了 border 属性来演示,当鼠标悬停时,翻转本身会超出盒子(如果您不想要 3D 效果,请删除 perspective) */
.flip-box {
  background-color: transparent;
  width: 300px;
  height: 200px;
  border: 1px solid #f1f1f1;
  perspective: 1000px; /* 如果不需要3D效果,请移除此行 */
}

/* 这个容器用于定位正面和背面 */
.flip-box-inner {
  position: relative;
  width: 100%;
  height: 100%;
  text-align: center;
  transition: transform 0.8s;
  transform-style: preserve-3d;
}

/* 当鼠标移动到翻转盒子容器上时,进行水平翻转 */
.flip-box:hover .flip-box-inner {
  transform: rotateY(180deg);
}

/* 定位正面和背面 */
.flip-box-front, .flip-box-back {
  position: absolute;
  width: 100%;
  height: 100%;
  -webkit-backface-visibility: hidden; /* Safari */
  backface-visibility: hidden;
}

/* 设置正面的样式 */
.flip-box-front {
  background-color: #bbb;
  color: black;
}

/* 设置背面的样式 */
.flip-box-back {
  background-color: dodgerblue;
  color: white;
  transform: rotateY(180deg);
}

亲自试一试

垂直翻转

要进行垂直翻转而不是水平翻转,请使用 rotateX 方法而不是 rotateY

实例

.flip-box:hover .flip-box-inner {
  transform: rotateX(180deg);
}

.flip-box-back {
  transform: rotateX(180deg);
}

亲自试一试

注意:这些例子在平板电脑和/或手机上可能无法正常工作。

相关页面

教程:CSS 2D 变换

教程:CSS 3D 变换