CSS3实现3D翻牌效果

在实现这个效果之前,我们需要先理解一下css3中的perspective、transform-style、backface-visibility这三个属性值。

1、概念理解

1.1 perspective

w3school上给perspective 的定义为: 3D 元素距视图的距离,可以简单理解成观察者和物体之间的距离。在css3 3D层面,你也可以把它理解为表示3D效果的一个强度。当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身

1.2 transform-style

transform-style:表示子元素需要遵循怎样的空间体系规则。当子元素需要设置空间体系规则的时候,需要在其父元素中设置这个属性。它有两个值:

  1. flat表示所有子元素在2D平面呈现;
  2. preserve-3d表示所有子元素在3D空间中呈现;

1.3 backface-visibility

backface-visibility:表示当元素不面向屏幕时是否可见。如果在旋转元素不希望看到其背面时,该属性很有用。它同样有两个值:

  1. visible表示背面是可见的;
  2. hidden表示背面是不可见的;

2、如何实现

2.1 关键HTML代码

<div class="wrapper">
    <div class="card">
      <div class="card-face card-front">front</div>
      <div class="card-face card-back">back</div>
    </div>
</div>
复制代码

2.2 关键CSS代码

.wrapper {
  margin: 100px auto;
  border: 1px solid #ccc;
  width: 200px;
  height: 300px;
  perspective: 600px;
}

.card {
  position: relative;
  width: 100%;
  height: 100%;
  transition: transform 1s;
  transform-style: preserve-3d;
  cursor: pointer;
  &.active {
    transform: rotateY(180deg);
  }
}

.card-face {
  position: absolute;
  width: 100%;
  height: 100%;
  line-height: 260px;
  color: #fff;
  text-align: center;
  font-weight: bold;
  font-size: 40px;
  backface-visibility: hidden;
  &.card-front {
    background-color: #f00;
  }
  &.card-back {
    background-color: #4577dc;
    transform: rotateY(180deg);
  }
}复制代码

当我们需要点击卡片实现前后反转的时候,直接在card类上增减active类即可!

2.2 实际预览效果


3、小结

如果有什么疑问或者更好的建议,欢迎在评论区留言。文笔有限,文中若有不正之处,万望告知!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值