3d旋转

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>Document</title>
  6     <style>
  7     *{
  8         padding:0;
  9         margin:0;
 10         list-style: none;
 11     }
 12     body{
 13         overflow: hidden;
 14         background: #000;
 15     }
 16     #box{
 17         width:100px;
 18         height:85px;
 19         position: absolute;
 20         top:50%;
 21         left:50%;
 22         margin:-200px 0 0 -67px;
 23         transform-style: preserve-3d;
 24         transform:perspective(1500px) rotateX(-15deg);
 25     }
 26     ul li{
 27         position: absolute;
 28         top:0;
 29         left:0;
 30         width:100%;
 31         height:100%;
 32         background: url(img/1.jpg) no-repeat;
 33         background-size:contain;
 34         border-radius: 10px;
 35         box-shadow: 0px 0px 10px 4px #fff;
 36
 37         transform: perspective(1500px) rotateY(0deg) translateZ(0px);
 38
 39
 40         -webkit-box-reflect:below 20px linear-gradient(rgba(0,0,0,0) 40%, rgba(0,0,0,0.4));
 41     }
 42     </style>
 43     <script>
 44     window.onload=function(){
 45         var oBox=document.getElementById(‘box‘);
 46
 47         var N=9;
 48         for (var i = 0; i <N; i++) {
 49             var oLi=document.createElement(‘li‘);
 50             oLi.style.backgroundImage=‘url(img/‘+(i+1)+‘.jpg)‘;
 51
 52             (function(obj,index){
 53                 setTimeout(function(){
 54                     obj.style.transform=‘perspective(1500px) rotateY(‘+index*360/N+‘deg) translateZ(300px)‘;
 55                 },0)
 56             })(oLi,i);
 57
 58             oLi.style.transition=‘1s all ease ‘+200*(N-i)+‘ms‘;
 59             oBox.appendChild(oLi);
 60         }
 61
 62
 63         //键盘
 64         var aLi=oBox.children;
 65         //检测发牌结束
 66
 67         aLi[0].addEventListener(‘transitionend‘,function(){
 68             for (var i = 0; i < aLi.length; i++) {
 69                 aLi[i].style.transition=‘none‘;
 70                 d=Math.abs(Math.abs((i*360/N)%360)-180)/180;
 71                 if(d<0.3){
 72                     d=0.3;
 73                 }
 74                 aLi[i].style.opacity=d;
 75             }
 76         },false)
 77
 78
 79         var y=0;
 80         var x=0;
 81
 82         var lastX=0;
 83         var lastY=0;
 84
 85         var speedX=0;//绕着X轴旋转的速度
 86         var speedY=0;//绕着Y轴旋转的速度
 87
 88         var timer=null;
 89         document.onkeydown=function(ev){
 90             switch(ev.keyCode){
 91                 case 37:
 92                     y--;
 93                     break;
 94                 case 39:
 95                     y++;
 96                     break;
 97                 case 38:
 98                     x++;
 99                     break;
100                 case 40:
101                     x--;
102                     break;
103             }
104
105             move(x,y);
106         };
107         document.onmousedown=function(ev){
108             clearInterval(timer);
109             var disX=ev.clientX-y;
110             var disY=ev.clientY-x;
111             document.onmousemove=function(ev){
112                 speedX=ev.clientY-lastY;
113                 speedY=ev.clientX-lastX;
114
115                 lastX=ev.clientX;
116                 lastY=ev.clientY;
117                 x=ev.clientY-disY;
118                 y=ev.clientX-disX;
119                 //赋值
120                 move(-x/4,y/4);
121             };
122             document.onmouseup=function(){
123                 timer=setInterval(function(){
124                     speedX*=0.95;
125                     speedY*=0.95;
126                     x+=speedX;
127                     y+=speedY;
128                     move(-x/4,y/4);
129
130                     if(Math.abs(speedX)<1 && Math.abs(speedY)<1){
131                         clearInterval(timer);
132                     }
133
134                 },30)
135                 document.onmouseup=null;
136                 document.onmousemove=null;
137             };
138             return false;
139         };
140
141         function move(x,y){
142             for(var i=0;i<aLi.length; i++){
143                 aLi[i].style.transition=‘none‘;
144                 aLi[i].style.transform=‘perspective(1500px) rotateY(‘+(i*360/N+y)+‘deg) translateZ(300px)‘;
145
146                 d=Math.abs(Math.abs((i*360/N+y)%360)-180)/180;
147                 //aLi[i].innerHTML=d;
148                 if(d<0.3){
149                     d=0.3;
150                 }
151                 aLi[i].style.opacity=d;
152             }
153             oBox.style.transform=‘perspective(1500px) rotateX(‘+(x-15)+‘deg)‘;
154         }
155     };
156     </script>
157 </head>
158 <body>
159     <ul id="box">
160         <!-- <li></li> -->
161     </ul>
162 </body>
163 </html>
时间: 2024-10-14 16:49:57

3d旋转的相关文章

3D旋转菜单

今天来个3D旋转菜单,是纯css3实现的,主要用到transform,transition,backface-visibility. 主要是transform这个变换,它是今天猪脚. transform里有transform-style 属性规定如何在 3D 空间中呈现被嵌套的元素. transform-origin 属性允许您改变被转换元素的位置. backface-visibility 属性定义当元素不面向屏幕时是否可见. 代码: <!DOCTYPE html> <html lang

CSS3——3D旋转图(跑马灯效果图)

CSS3新增了很多新的属性,可以用很少的代码实现炫酷的动画效果,但由于兼容性各浏览器的能力存在不足,有特别需求的网站就呵呵啦.H5C3已是大势所趋了,之前看过一个新闻,Chrome将在年底全面转向H5,抛弃了Flash.. 本案例主要使用了CSS3中的变换transform和动画animation属性,实现了跑马灯效果,详细的解释在代码中的注释中. 做好布局之后的效果图 添加了animation样式,实现自动旋转,并且鼠标移入,停止动画.(鼠标移入,绕Z轴旋转90度) 代码: 1 <!DOCTY

【小松教你手游开发】【系统模块开发】做一个3d旋转菜单

在unity做一个3d旋转菜单,像乱斗西游2的这种: 暂时有两种方法可以实现: 一.当做是2d界面,通过定义几个固定点的坐标.大小.透明度,还有每个点的panel depth大小,把数据存储下来,在手机滑动的过程中计算滑动划过的距离和这个panel大小的比值,乘以两个点之间的距离,获得坐标点移动的距离,通过改变x轴改变位置,同理改变大小和透明度. 这个方法我自己做2d游戏的时候实现过,做起来比较简单,没有什么可拓展性可言,并且会有很多限制,比如拖动过程中很难转变方向.要自己实现运动中的弹性(这里

【学】CSS3的3D动画 ——3D旋转之骰子样式的钟表(2)上—— 妙味课堂

这个是3D旋转的进阶版,是一个类似与骰子的正方体.这个版本只有秒数的个位数,还没有写整个钟表,下面那个版本好好想想该怎么写 这个效果需要用到transform-style: preserve-3d. 利用transform: rotateX, rotateY, rotateZ来定义物体转动轴,实现3D旋转 给一个正方体设置6个面,每个面都设置旋转基面,并且直接先朝各个方向转90度,有一个面要注意,就是和最前面的那个面的对面,不用转,但是要用transform: translateZ()来让这个面

一款基于jQuery和CSS3炫酷3D旋转画廊特效插件

这是一款效果炫酷的jQuery和CSS3 3D旋转画廊特效插件.该3D画廊插件可以通过前后导航按钮来切换图片,效果就像旋转木马一样.它还带有点击放大图片,显示图片标题和用键盘操作等功能. 在线预览   源码下载 简要教程 这是一款效果非常炫酷的jQuery和CSS3 3D旋转画廊特效插件.第一个DEMO是一个简单的例子,使用CSS3来制作3d旋转效果,然后用js来控制前后导航按钮.第二个DEMO是第一个DEMO的升级版,它增加了图片标题.查看图片.键盘控制等其它功能. HTML结构 这个3D画廊

【CSS3进阶】酷炫的3D旋转透视

之前学习 react+webpack ,偶然路过 webpack 官网 ,看到顶部的 LOGO ,就很感兴趣. 最近觉得自己 CSS3 过于薄弱,想着深入学习一番,遂以这个 LOGO 为切入口,好好研究学习了一下相关的 CSS3 属性.webpack 的 LOGO 动画效果乍看不是很难,深入了解之后,觉得内部其实大有学问,自己折腾了一番,做了一系列相关的 CSS3 动画效果. 先上 demo ,没有将精力放在兼容上,请用 chrome 打开. 本文完整的代码,以及更多的 CSS3 效果,在我 g

css3 地球3d旋转

<!doctype html><html><head><meta charset="utf-8"><title>地球3d旋转</title><style>body{ height:768px; overflow:hidden; background-color:#000}#sun{ width:2000px; height:2000px; background-image:url(images/dc4.

JavaScrip实现3D旋转动态效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

一步步教你打造3D旋转盒

今天又来一了一篇关于3D效果的文章,教你打造自己的3D旋转盒 首先还是希望大家自己看看关于transform这个属性的相关特性作用,张前辈已经写了详细的教程,直接附上 http://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/comment-page-1/ OK下面我们开始吧 首先我们创建如下的HTML基本骨架 <div id="container"&g

Android实现3D旋转的View

今天在网上看到一篇文章写关于Android实现3D旋转(http://www.ibm.com/developerworks/cn/opensource/os-cn-android-anmt2/index.html?ca=drs-),出于好奇就写了一个,运行效果如下: 下面我们就开始一步步完成这个效果吧. 实现水平滑动 package com.example.rotation3dview; import android.content.Context; import android.util.At