如何css制作3d旋转立方体效果?

html-css016

如何css制作3d旋转立方体效果?,第1张

具体步骤如下:

一、立方体结构中,使用一个wrapper div来包裹立方体。在里面使用6个div来制作立方体的6个面。

二、立方体的每一个面都有它自己的元素。我们稍后会使用CSS来将立方体的6个面放置到正确的位置上。

三、在立方体的CSS样式中,首先要关注的是立方体的wrapper div。为了制作3D效果,我们需要为它提供一个 CSS perspective。

四、CSS perspective属性是一个比较复杂的CSS3属性。最好的理解它的方法是看完文档后,自己动手修改一下DEMO中的perspective属性来看看它的变化。

下面需要给包含立方体6个面的立方体的容器.cube提供样式:

1、.cube {

position: relative

width: 200px

transform-style: preserve-3d

2、给立方体容器200像素的宽度,并设置为相对定位,这样在它里面的立方体的6个面可以设置为绝对定位。

3、preserve-3d属性确保所有6个面都处于3D立体状态。

4、在为6个面设置它们的位置之前,先给它们一些通用的样式:

.cube div {

position: absolute

width: 200px

height: 200px

}

5、在进过上面对立方体6个面的一系列设置之后,现在我们可以为6个面制作变形效果,以使它们组装为一个立方体。

6、rotateY的值可以旋转立方体的各个面,使上面的文字处于正确的位置上。

7、而 translateZ 的值使元素在指定容器中向前或向后移动。translateY的值看起来有些混乱,但是请记住,它的作用是通过透明的面板来使指定的面升高或降低来制作3D效果。

8、每一个面都有自己的translations值来使它们处于适当的位置上。你可以自己修改一下这些值来看看效果。

1、首先准备一个HTML文档,文档中准备好两个图片,接下来会对这两个图片进行旋转。

2、然后对HTML中的内容定义一些样式,如下图所示,主要是标题以及ul的样式。

3、接下来就给图片所在的li定义宽高,如下图所示。

4、然后给图片设置过渡效果,过渡使用transition属性,如下图所示。

5、当鼠标悬停在图片上时,通过rotate给其设置变形,如下图所示,正数代表的是顺时针,负数代表的是逆时针。

6、最后运行程序,会看到如下图所示的效果,鼠标放在图片上会顺时针或者逆时针旋转。

<!doctype html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<style>

/*如果使用的不是webkit浏览器 请将代码中的注释都去掉就可以看到效果*/

@-webkit-keyframes clockwiseRotate{

to {

transform:rotate(90deg)

}

}

@-webkit-keyframes anticlockwiseRotate{

to {

transform:rotate(-90deg)

}

}

@-webkit-keyframes zoomScale{

to{

transform:scale(1.5)

}

}

.stage{

width:200px

margin:200px auto auto

border-left:1px solid

border-right:1px solid

}

.box{

width:100px

height:100px

transform-origin:0 0

}

.clockwise{

background-color:purple

-webkit-animation:clockwiseRotate 2s infinite

/* 设置旋转中心为左上角 顺时针旋转90度 */

/*transform-origin:0 0

transform:rotate(90deg)*/

}

.anticlockwise{

background-color:orange

-webkit-animation:anticlockwiseRotate 2s infinite

/* 设置旋转中心为左上角 逆时针旋转90度*/

/*transform-origin:0 0

transform:rotate(-90deg)*/

}

.zoom{

background-color:green

-webkit-animation:zoomScale 2s infinite

/* 设置放大中心为元素中心 放大1.5倍*/

transform-origin:50% 50%

/*transform:scale(1.5)*/

}

</style>

</head>

<body>

<div class="stage">

<div class="box clockwise"></div>

<div class="box anticlockwise"></div>

<div class="box zoom"></div>

</div>

</body>

</html>