欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

HTML5 3D相册_3D旋转木马效果相册实例

程序员文章站 2022-03-01 14:49:50
...

一、perspective

perspective属性包括两个属性:none和具有单位的长度值、其中perspective属性的默认值为none、表示无限的角度来看3D物体、但看上去是平的、另一个值<length>接受一个长度单位大于0的值、而且其单位不能为百分比值、<length>值越大、角度出现的越远、从而创建一个相当低的强度和非常小的3D空间变化、反之、此值越小、角度出现的越近、从而创建一个高强度的角度和一个大型3D变化、简单一点说:当perspective设置length时、如果越小则表示3D效果越明显、你的眼睛就越靠近3D物体、反之则反之


二、transform: translateZ(length)

假设设置了perspective:300px时、设置translateZ的值越小则子元素大小越小、当设置值接近300px时、则仿佛此元素在面前、当超过300px以后、则以前到达你视野的后面、该元素就不可见了


三、源代码分析

1、首先所有的图片的容器position:absolute、叠加在一起、然后一次设置rotateY分别为40*i 、i= 0 , 1, 2...9 、所有图片会相交成一个类似花的形状

2、然后为每个图片的容器设置translateZ、所有图片会从对应的角度向外移动、扩展成一个大圆、即上图效果

HTML5 3D相册_3D旋转木马效果相册实例

HTML代码

<div id="stage">
    <div id="container">
        <img src="imgs/1.jpg"/>
        <img src="imgs/2.jpg"/>
        <img src="imgs/3.jpg"/>
        <img src="imgs/4.jpg"/>
        <img src="imgs/5.jpg"/>
        <img src="imgs/6.jpg"/>
        <img src="imgs/7.jpg"/>
        <img src="imgs/8.jpg"/>
        <img src="imgs/9.jpg"/>
    </div>
</div>

CSS代码

img
{
	width: 128px;
	box-shadow: 0 1px 3px rgba(0, 0, 0, .5);
	position: absolute;
	bottom: 0;
}

#stage
{
	width: 900px;
	min-height: 100px;
	margin-left: auto;
	margin-right: auto;
	padding: 100px 50px;
	-webkit-perspective: 800px;
	-moz-perspective: 800px;
	-ms-transform:perspective(800px) ;
	position: relative;
}

#container
{
	width: 128px;
	height: 100px;
	margin-left: -64px;
	-webkit-transition: -webkit-transform 1s;
	-moz-transition: -webkit-transform 1s;
	-ms-transition: -webkit-transform 1s;
	transition: transform 1s;
	-webkit-transform-style: preserve-3d;
	-moz-transform-style: preserve-3d;
	-ms-transform-style: preserve-3d;
	position: absolute;
	left: 50%;
}

img:nth-child(0)
{
	-webkit-transform: rotateY(0deg) translateZ(300px);
	-moz-transform: rotateY(0deg) translateZ(300px);
	-ms-transform: rotateY(0deg) translateZ(300px);

}

img:nth-child(1)
{
	-webkit-transform: rotateY(40deg) translateZ(300px);
	-moz-transform: rotateY(40deg) translateZ(300px);
	-ms-transform: rotateY(40deg) translateZ(300px);
}

img:nth-child(2)
{
	-webkit-transform: rotateY(80deg) translateZ(300px);
	-moz-transform: rotateY(80deg) translateZ(300px);
	-ms-transform: rotateY(80deg) translateZ(300px);
}

img:nth-child(3)
{
	-webkit-transform: rotateY(120deg) translateZ(300px);
	-moz-transform: rotateY(120deg) translateZ(300px);
	-ms-transform: rotateY(120deg) translateZ(300px);
}

img:nth-child(4)
{
	-webkit-transform: rotateY(160deg) translateZ(300px);
	-moz-transform: rotateY(160deg) translateZ(300px);
	-ms-transform: rotateY(160deg) translateZ(300px);
}

img:nth-child(5)
{
	-webkit-transform: rotateY(200deg) translateZ(300px);
	-moz-transform: rotateY(200deg) translateZ(300px);
	-ms-transform: rotateY(200deg) translateZ(300px);
}

img:nth-child(6)
{
	-webkit-transform: rotateY(240deg) translateZ(300px);
	-moz-transform: rotateY(240deg) translateZ(300px);
	-ms-transform: rotateY(240deg) translateZ(300px);
}

img:nth-child(7)
{
	-webkit-transform: rotateY(280deg) translateZ(300px);
	-moz-transform: rotateY(280deg) translateZ(300px);
	-ms-transform: rotateY(280deg) translateZ(300px);
}

img:nth-child(8)
{
	-webkit-transform: rotateY(320deg) translateZ(300px);
	-moz-transform: rotateY(320deg) translateZ(300px);
	-ms-transform: rotateY(320deg) translateZ(300px);
}

img:nth-child(9)
{
	-webkit-transform: rotateY(360deg) translateZ(300px);
	-moz-transform: rotateY(360deg) translateZ(300px);
	-ms-transform: rotateY(360deg) translateZ(300px);
}

div#stage作为舞台、设置perspective、每个li分别设置rotateY、以及translateZ;然后我们会div#container设置了-webkit-transform-style: preserve-3d


transform-style: flat | preserve-3d

其中flat值为默认值、表示所有子元素在2D平面呈现、preserve-3d表示所有子元素在3D空间中呈现、如果对一个元素设置了transform-style的值为preserve-3d、它表示不执行平展操作、他的所有子元素位于3D空间中、一般情况下、此属性用于3D动画效果的执行元素、即就是它要应用3D动画效果、所以它的子元素都应该在3D空间

有一点要注意:本例子、其实正在的动画效果、在于鼠标点击、div#container在不端的改变rotateY、所有的图片元素均在div#container中、且已经展现为旋转木马效果、现在要做的就是旋转这个木马、所以只需要每次改变div#container的rotateY 40角度即可

最后给大家贴上源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1mgC7icS 密码: xtvn