CSS3 3D transform创建立方体

本文介绍如何使用HTML和CSS创建一个交互式的3D立方体。通过定义不同的transform属性,可以使立方体的每个面正确显示,并实现翻转效果。文章详细解释了如何设置各个面的位置以及如何为立方体添加过渡动画。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先建立html结构

<section class="container">
  <div id="cube">
    <figure class="front">1</figure>
    <figure class="back">2</figure>
    <figure class="right">3</figure>
    <figure class="left">4</figure>
    <figure class="top">5</figure>
    <figure class="bottom">6</figure>
  </div>
</section>

然后定义css,关键是透视和style

.container {
  width: 200px;
  height: 200px;
  position: relative;
  perspective: 1000px;
}

#cube {
  width: 100%;
  height: 100%;
  position: absolute;
  transform-style: preserve-3d;
}

#cube figure {
  width: 196px;
  height: 196px;
  display: block;
  position: absolute;
  border: 2px solid black;
}


定义立方体的6个面,一个element是有正反面的,这里都是以div中心先旋转一个角度,比如说back是先旋转180度,这时这个div的z轴射向页面里(默认的是从页面射向外面),然后向页面里100px

#cube .front  { transform: rotateY(   0deg ) translateZ( 100px ); }
#cube .back   { transform: rotateX( 180deg ) translateZ( 100px ); }
#cube .right  { transform: rotateY(  90deg ) translateZ( 100px ); }
#cube .left   { transform: rotateY( -90deg ) translateZ( 100px ); }
#cube .top    { transform: rotateX(  90deg ) translateZ( 100px ); }
#cube .bottom { transform: rotateX( -90deg ) translateZ( 100px ); }

cube建立好了之后可以开始定义对cube的transform

#cube.show-front  { transform: translateZ( -100px ) rotateY(    0deg ); }
#cube.show-back   { transform: translateZ( -100px ) rotateX( -180deg ); }
#cube.show-right  { transform: translateZ( -100px ) rotateY(  -90deg ); }
#cube.show-left   { transform: translateZ( -100px ) rotateY(   90deg ); }
#cube.show-top    { transform: translateZ( -100px ) rotateX(  -90deg ); }
#cube.show-bottom { transform: translateZ( -100px ) rotateX(   90deg ); }

最后加上transition

#cube { transition: transform 1s; }


要点:

cube里的元素是一个整体,所有的transform都受到影响

一般是cube里的元素先transform到相应的位置,然后对cube进行transform

transform顺序很重要

transform总是和原始状态比较,不是和当前状态比较,如果没有用transition就没有动画,直接从一个状态变到另一个

transition会负责如何从当前状态到下一个状态,如果你想控制这个过程,应该用CSS3中的animation


http://desandro.github.com/3dtransforms/docs/cube.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值