HTML5 3D相册_3D旋转木马效果相册实例
2014-11-09 19:35:45  By: dwtedx

一、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、所有图片会从对应的角度向外移动、扩展成一个大圆、即上图效果

诱人的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

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+