<!DOCTYPE html> <html lang=en> <head> <Meta name=viewport content=width=device-width,user-scalable=no /> <Meta charset=UTF-8> <title>Document</title> <style type=text/css> body, html { margin: 0; height: 100%; overflow: hidden; position: relative; } .wrap { position: relative; height: 100%; } .view, .BoxZ, .Box { position: absolute; left: 50%; top: 50%; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; } .Box { -webkit-transform: rotateY(0deg); transform: rotateY(0deg); -webkit-animation: 36s rotate infinite linear; animation: 36s rotate infinite linear; } .Box span { position: absolute; left: 50%; top: 50%; margin: -512px 0 0 -512px; width: 1024px; height: 1024px; text-align: center; -webkit-backface-visibility: hidden; backface-visibility: hidden; /* 背面,角度和父级的角度相对的面是背景 */ } .Box span:nth-of-type(1) { -webkit-transform: rotateY(0deg) translateZ(-510px); transform: rotateY(0deg) translateZ(-511px); background: url(img/neg-x.png) no-repeat; } .Box span:nth-of-type(2) { -webkit-transform: rotateY(90deg) translateZ(-511px); transform: rotateY(90deg) translateZ(-511px); background: url(img/neg-z.png) no-repeat; } .Box span:nth-of-type(3) { -webkit-transform: rotateY(180deg) translateZ(-511px); transform: rotateY(180deg) translateZ(-511px); background: url(img/pos-x.png) no-repeat; } .Box span:nth-of-type(4) { background: url(img/pos-z.png) no-repeat; -webkit-transform: rotateY(270deg) translateZ(-511px); transform: rotateY(270deg) translateZ(-511px); } .Box span:nth-of-type(5) { background: url(img/pos-y.png); -webkit-transform: rotateX(-90deg) translateZ(-511px); transform: rotateX(-90deg) translateZ(-511px); } .Box span:nth-of-type(6) { background: url(img/neg-y.png); -webkit-transform: rotateX(90deg) translateZ(-511px); transform: rotateX(90deg) translateZ(-511px); } /* transform-origin z轴的设置,在ios下有兼容问题 */ #loading { position: fixed; left: 0; top: 0; width: 100%; height: 100%; z-index: 10; background: #fff url(img/loading.gif) no-repeat center center; } </style> </head> <body> <div id=loading></div> <script type=text/javascript> /* 检测图片加载完成 */ (function(){ var imgData = [ img/neg-x.png, img/neg-y.png, img/neg-z.png, img/pos-x.png, img/pos-y.png, img/pos-z.png ]; var nub = 0; for(var i = 0; i < imgData.length; i++){ load(imgData[i]); } function load(url){ var img = new Image(); img.onload = function(){ nub++; if(nub == imgData.length){ loading.style.display = none; } }; img.src = url; } })(); </script> <div class=wrap> <div class=view> <div class=BoxZ> <div class=Box> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> </div> </div> </div> </div> <script type=text/javascript src=js/m.touch.js?1.1.11></script> <script type=text/javascript> (function(){ setPerspective(); window.addEventListener('resize', function(e) { setPerspective(); }); function setPerspective(){ var wrap = document.querySelector('.wrap'); var view = document.querySelector('.view'); var BoxZ = document.querySelector('.BoxZ'); var deg = 45;//视野夹角(角度越小,看到的范围越广,角度越大,看到的范围越少); var Z = Math.round(Math.tan(deg*Math.PI/180)*wrap.clientHeight/2);//计算景深 wrap.style.perspective = wrap.style.WebKitPerspective = Z + px; //距离景物距离不变,那看到的画面大小就不变 css(view,translateZ,Z); css(BoxZ,translateZ,-100); } })(); (function(){ var Box = document.querySelector('.Box'); css(Box,rotateX,0); css(Box,rotateY,0); window.addEventListener('deviceorientation', function(e) { var x = e.beta; var y = e.gamma; var z = e.alpha; var rotateX = x - 90; var rotateY = (y + z)%360; if(rotateX > 60){ rotateX = 60; } else if(rotateX <-60){ rotateX = -60; } css(Box,rotateX,rotateX); css(Box,rotateY,-rotateY); }); })(); // </script> </body> </html>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。