视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
H5+C3实现旋转木马相册
2020-11-27 15:06:01 责编:小采
文档
这次给大家带来H5+C3实现旋转木马相册,H5+C3实现旋转木马相册的注意事项有哪些,下面就是实战案例,一起来看一下。

效果图:嘿嘿,我把大学毕业时的一些照片,做成旋转木马,绕着我大文理旋转,不忘母校的培育之恩~

1、perspective

perspective属性包括两个属性:none和具有单位的长度值。

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

2、transform: translateZ(length)

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

上例的核心:

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

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

html:

<!DOCTYPE html> 
<html> 
<head> 
 <title></title> 
 <meta charset="utf-8"/> 
 <link href="css/reset.css" rel="stylesheet" type="text/css"/> 
 <script type="text/javascript" src="../../jquery-1.8.3.js"></script> 
 
 <script type="text/javascript"> 
 // alert(  / Math.tan(20 / 180 * Math.PI)); 
 var transform = function (element, value, key) 
 { 
 key = key || "Transform"; 
 ["Moz", "O", "Ms", "Webkit", ""].forEach(function (prefix) 
 { 
 element.style[prefix + key] = value; 
 }); 
 
 return element; 
 } 
 
 
 $(function () 
 { 
 var deg = -40 , i = 1; 
 $("#container").click(function () 
 { 
 transform($(this)[0], "rotateY(" + (deg * i++) + "deg)") 
 }); 
 }); 
 
 </script> 
 
 
 
</head> 
<body> 
<p id="stage"> 
 <ul id="container"> 
 <li> 
 <img src="img/1.jpg"/> 
 <span>Do one thing at a time, and do well..</span> 
 </li> 
 <li> 
 <img src="img/2.jpg"/> <span>Do one thing at a time, and do well..</span> 
 </li> 
 <li> 
 <img src="img/3.jpg"/> <span>Keep on going never give up.</span> 
 </li> 
 <li> 
 <img src="img/4.jpg"/> <span>Whatever is worth doing is worth doing well.</span> 
 </li> 
 <li> 
 <img src="img/5.jpg"/> <span>Believe in yourself.</span> 
 </li> 
 <li> 
 <img src="img/6.jpg"/> <span>Action speak louder than words.</span> 
 </li> 
 <li> 
 <img src="img/7.jpg"/> <span>Never put off what you can do today until tomorrow.</span> 
 </li> 
 <li> 
 <img src="img/8.jpg"/> <span>Jack of all trades and master of none.</span> 
 </li> 
 <li> 
 <img src="img/9.jpg"/> <span>Judge not from appearances.</span> 
 </li> 
 </ul> 
</p> 
</body> 
</html>

CSS:

li 
{ 
 width: 128px; 
 box-shadow: 0 1px 3px rgba(0, 0, 0, .5); 
 position: absolute; 
 bottom: 0; 
} 
 
li img 
{ 
 width: 128px; 
 box-shadow: 0 1px 3px rgba(0, 0, 0, .5); 
 vertical-align: middle; 
} 
 
li span 
{ 
 display: block; 
 width: 128px; 
 text-align: center; 
 color: #333; 
 font-size: 8px; 
} 
 
#stage 
{ 
 
 width: 900px; 
 min-height: 100px; 
 margin-left: auto; 
 margin-right: auto; 
 padding: 100px 50px; 
 -webkit-perspective: 1200px; 
 position: relative; 
} 
 
#container 
{ 
 background: url("img/xawl.jpg") no-repeat 0 0; 
 margin-top: 200px; 
 width: 128px; 
 box-shadow: 0 1px 3px rgba(0, 0, 0, .5); 
 height: 100px; 
 margin-left: -px; 
 -webkit-transition: -webkit-transform 1s; 
 transition: transform 1s; 
 -webkit-transform-style: preserve-3d; 
 position: absolute; 
 left: 50%; 
} 
 
li:nth-child(0) 
{ 
 -webkit-transform: rotateY(0deg) translateZ(300px); 
} 
 
li:nth-child(1) 
{ 
 -webkit-transform: rotateY(40deg) translateZ(300px); 
} 
 
li:nth-child(2) 
{ 
 -webkit-transform: rotateY(80deg) translateZ(300px); 
} 
 
li:nth-child(3) 
{ 
 -webkit-transform: rotateY(120deg) translateZ(300px); 
} 
 
li:nth-child(4) 
{ 
 -webkit-transform: rotateY(160deg) translateZ(300px); 
} 
 
li:nth-child(5) 
{ 
 -webkit-transform: rotateY(200deg) translateZ(300px); 
} 
 
li:nth-child(6) 
{ 
 -webkit-transform: rotateY(240deg) translateZ(300px); 
} 
 
li:nth-child(7) 
{ 
 -webkit-transform: rotateY(280deg) translateZ(300px); 
} 
 
li:nth-child(8) 
{ 
 -webkit-transform: rotateY(320deg) translateZ(300px); 
} 
 
li:nth-child(9) 
{ 
 -webkit-transform: rotateY(360deg) translateZ(300px); 
}

p#stage作为舞台,设置perspective,每个li分别设置rotateY,以及translateZ;然后我们会p#container设置了-webkit-transform-style: preserve-3d;transform-style: flat | preserve-3d其中flat值为默认值,表示所有子元素在2D平面呈现。preserve-3d表示所有子元素在3D空间中呈现。如果对一个元素设置了transform-style的值为preserve-3d,它表示不执行平展操作,他的所有子元素位于3D空间中。一般情况下,此属性用于3D动画效果的执行元素,即就是它要应用3D动画效果,所以它的子元素都应该在3D空间。

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

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

H5的存储方式详解

H5如何使用约束验证API

postMessage实现跨域、跨窗口消息传递

下载本文
显示全文
专题