强大!HTML5 3D美女图片旋转实现教程
2020-12-13 02:46
标签:style blog class code java tar 又到周末,来弄点HTML5的特效玩玩,今天要折腾的是HTML5
3D图片特效,图片在垂直方向上被分割成一条条小矩形,在图片上拖动鼠标即可让每一个小矩形旋转,从而让图片形成3D立体的效果,来看看效果图: 大家也可以在这里看到具体的DEMO演示。 下面我们来分析一下实现这款HTML5
3D图片旋转特效的源代码,这里我们引用了知名的JS动画框架TweenMax.js。 先来看看HTML代码: 这里我们看到,我们用了n个ul来实现将图片分割成n个小长方形,为了之后js调用的方便,我们将这些ul标识成level-n。 然后我们再来看看CSS代码,这里主要是引入了这张美女图片,哈哈。 最后是Javascript代码,这里我们引入了jQuery和动画引擎TweenMax.js: 下面是实现旋转动画的js代码: 在TweenMax的帮助下,动画实现简单了不少。 最后附上我们可爱的源代码,下载地址>> 强大!HTML5 3D美女图片旋转实现教程,搜素材,soscw.com 强大!HTML5 3D美女图片旋转实现教程 标签:style blog class code java tar 原文地址:http://www.cnblogs.com/html5tricks/p/3720135.htmlul id="level0" class=‘cube‘>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
ul>
ul id="level1" class=‘cube‘>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
ul>
ul id="level2" class=‘cube‘>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
ul>
ul id="level3" class=‘cube‘>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
ul>
ul id="level4" class=‘cube‘>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
ul>
ul id="level5" class=‘cube‘>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
ul>
ul id="level6" class=‘cube‘>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
ul>
ul id="level7" class=‘cube‘>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
ul>
ul id="level8" class=‘cube‘>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
ul>
ul id="level9" class=‘cube‘>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
ul>
ul id="level10" class=‘cube‘>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
ul>
ul id="level11" class=‘cube‘>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
ul>
ul id="level12" class=‘cube‘>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
li class=‘face‘>li>
ul>
.cube {
position: relative;
margin: 0em auto 0;
padding: 0px;
width: 20em;
height: 3.0em;
list-style: none;
transform-style: preserve-3d;
/*animation: ani 8s infinite linear;*/
}
.face {
box-sizing: border-box;
position: absolute;
top: 180px;
left: 50%;
/*border: 1px solid #f0f0f0;*/
margin: -8em;
padding: 1.6em;
width: 20em;
height: 2em;
opacity: .85;
background: lightblue;
/*Creative Commons image from http://www.flickr.com/photos/37825670@N07/3562600154/sizes/z/in/photostream/ */
background: url(k6dbiLv.jpg) -115px -900px;
background-repeat: no-repeat;
backface-visibility: hidden;
}
.face:nth-child(1) {
transform: translateZ(10em);
}
.face:nth-child(2) {
transform: rotateY(180deg) translateZ(10em);
}
.face:nth-child(3) {
transform: rotateY(90deg) translateZ(10em);
}
.face:nth-child(4) {
transform: rotateY(-90deg) translateZ(10em);
}
script src=‘js/jquery.js‘>script>
script src=‘js/TweenMax.min.js‘>script>
var gaps=[];
var gapscnt=0;
var currentLevel=0;
var px=[0,0,0,0,0,0,0,0,0,0,0,0,0];
var vx=[0,0,0,0,0,0,0,0,0,0,0,0,0];
var windowHalfX = window.innerWidth / 2;
var windowHalfY = window.innerHeight / 2;
init()
function tickHandler() {
//run your logic here...
if(md){
gap=averageGaps(mouseX-oldMouseX);
}
gap*=.9;
vx[currentLevel]+=gap;
oldMouseX = mouseX;
var i;
for ( i = currentLevel; i ) {
vx[i+1]+=((vx[i]-vx[i+1])/slow);
}
for ( i = currentLevel; i > 0; i--) {
vx[i-1]+=(vx[i]-vx[i-1])/slow;
}
for ( i = 0; i