CSS3构建的3D盒子之导航应用

1.在用css3构建的盒子表面,放上iframe,来加载导航页面。

2.鼠标左键按下移动可旋转盒子,寻找想要的网址。

3.左键单机盒子表面,将全屏现实所点盒子表面的网站[iframe中],并可浏览,关闭后返回原来状态。

4.PC端,将额外显示2个css3做的旋转盒子[没什么意义]

5.移动端只显示一个导航盒子[模拟器正常,真机无效,留待以后查看,兼容开发有待提高。。。]

注:原本打算排列导航盒子,这样的话导航也变得比较好玩

但是,如果使用iframe来显示网站预览的话,速度太慢,太耗内存

尝试过用html2canvas,但是由于跨域问题,直接被灭

解决方法:通过服务器返回较实时的网站预览图的方式显示

---

可执行代码下载地址

http://download.csdn.net/detail/wangxsh42/8522151

---

效果图

PC端:

 

 

在线:

http://wangxinsheng.herokuapp.com/3dboxHome

代码段:

1.css3盒子构建:

html:

1 <divclass="cubeOut"style="left:25%;top:35%">
2     <divclass='cubemove'>
3         <divclass='face'><iframescrolling="no"loaded="0"url=""></iframe><divclass="label"></div><divclass="over"></div></div>
4         <divclass='face'><iframescrolling="no"loaded="0"url=""></iframe><divclass="label"></div><divclass="over"></div></div>
5         <divclass='face'><iframescrolling="no"loaded="0"url=""></iframe><divclass="label"></div><divclass="over"></div></div>
6         <divclass='face'><iframescrolling="no"loaded="0"url=""></iframe><divclass="label"></div><divclass="over"></div></div>
7         <divclass='face'><iframescrolling="no"loaded="0"url=""></iframe><divclass="label"></div><divclass="over"></div></div>
8         <divclass='face'><iframescrolling="no"loaded="0"url=""></iframe><divclass="label"></div><divclass="over"></div></div>
9     </div>
10 </div>

css3:

1 .cubeOut{
2 height:100%;
3 left:50%;
4 margin-left:-10em;
5 margin-top:-10em;
6 -webkit-perspective:1000px;
7 -ms-perspective:1000px;
8 perspective:1000px;
9 position:absolute;
10 top:50%;
11 width:100%;
12   }
13 .cube{
14 height:100%;
15 position:absolute;
16 -webkit-transform-style:preserve-3d;
17 -ms-transform-style:preserve-3d;
18 transform-style:preserve-3d;
19 width:100%;
20 transform:rotateX(-35deg) rotateY(35deg);
21 }
22 .cubeOut .move{-webkit-animation:6s spin linear infinite;
23 animation:6s spin linear infinite;}
24 .cube *{
25 border:2px solid rgba(54, 226, 248, 0.5);
26 display:block;
27 height:100%;
28 position:absolute;
29 width:100%;
30 }
31 .face{
32 cursor:pointer;
33 height:100%;
34 position:absolute;
35 width:100%;
36 }
37 .face:nth-child(1){
38 transform:rotateY(0deg) translateZ(150px);
39 background:rgba(255, 102, 102, 0.75);
40 }
41 .face:nth-child(2){
42 transform:rotateY(90deg) translateZ(150px);
43 background:rgba(179, 255, 102, 0.75);
44 }
45 .face:nth-child(3){
46 transform:rotateY(180deg) translateZ(150px);
47 background:rgba(102, 255, 255, 0.75);
48 }
49 .face:nth-child(4){
50 transform:rotateY(270deg) translateZ(150px);
51 background:rgba(178, 102, 255, 0.75);
52 }
53 .face:nth-child(5){
54 transform:rotateX(90deg) translateZ(150px);
55 background:rgba(178, 102, 255, 0.75);
56 }
57 .face:nth-child(6){
58 transform:rotateX(-90deg) translateZ(150px);
59 background:rgba(178, 102, 255, 0.75);
60 }
61 @keyframes spin{
62 from {63 -webkit-transform:translateZ(-10em) rotateX(0) rotateY(0deg);
64 transform:translateZ(-10em) rotateX(0) rotateY(0deg);
65   }
66
67 to{
68 -webkit-transform:translateZ(-10em) rotateX(360deg) rotateY(360deg);
69 transform:translateZ(-10em) rotateX(360deg) rotateY(360deg);
70   }
71 }72 @-webkit-keyframes spin{
73 from {74 -webkit-transform:translateZ(-10em) rotateX(0) rotateY(0deg);
75 transform:translateZ(-10em) rotateX(0) rotateY(0deg);
76   }
77
78 to{
79 -webkit-transform:translateZ(-10em) rotateX(360deg) rotateY(360deg);
80 transform:translateZ(-10em) rotateX(360deg) rotateY(360deg);
81   }
82 }

View Code

2.js操作代码

iframe加载操作[缩放iframe大小,默认以1024宽度访问网站]

1 $(".cube").find("iframe").each(function(i){2     if(this.attributes.url.value!=''){3     this.style.height = 1024+"px";4     this.style.width = 1024+"px";5     this.onload = this.onreadystatechange =iframeload;6     this.src = this.attributes.url.value;}7 });8
9 functioniframeload() {10     if(outFrame===this){return;}11     if (!this.readyState || this.readyState == "complete") {12         this.focus();13         this.style.transformOrigin = "left top";14         this.style.transform = "scale("+targetWidth/1024+")";
15         this.style.display="block";16         $(this).attr("loaded","1");17 }18 }

盒子旋转操作

1 var overs = document.querySelectorAll(".fix .over");2 for(var i =0;i<overs.length;i++){3     if($(overs[i]).prev().prev().attr("url")!='')4         overs[i].addEventListener("click", mouseclick, false);5     overs[i].addEventListener("mousedown", mousedown, false);6     document.addEventListener("mouseup", mouseup, false);7     overs[i].addEventListener("mousemove", mousemove, false);8 }9
10 functionmousedown(e){11     mouse.x=e.pageX;12     mouse.y=e.pageY;13     canmove = true;14 }15 functionmouseup(e){16     mouse.x=null;17     mouse.y=null;18     canmove = false;19 }20 functionmousemove(e){21     if(canmove && mouse.x!=null && mouse.y!=null){22         var ydeg=0,xdeg=0;23         xdeg = e.touches[0].pageX -mouse.x;24         ydeg = e.touches[0].pageY -mouse.y;25         xd =  (xd + xdeg)%360;26         yd = (yd -ydeg)%360;27         e.touches[0].target.parentNode.parentNode.style.transform = "rotateX("+yd+"deg) rotateY("+xd+"deg)";28         mouse.x=e.touches[0].pageX;29         mouse.y=e.touches[0].pageY;31 }32 }

盒子点击操作

1     functionmouseclick(e){2         var index = $(e.target.parentNode.parentNode.parentNode).find(".over").index($(e.target));3         switch(index){4             case 0:5                 xd = 0;6                 yd = 0;7                 break;8             case 1:9                 xd = -270;10                 yd = 0;11                 break;12             case 2:13                 xd = -180;14                 yd = 0;15                 break;16             case 3:17                 xd = -90;18                 yd = 0;19                 break;20             case 4:21                 xd = 0;22                 yd = -90;23                 break;24             case 5:25                 xd = 0;26                 yd = 90;27                 break;28             default:;29 }30         outFrame = e.target.parentNode.parentNode.getElementsByTagName("iframe")[index];31
32         if($(outFrame).attr("loaded")=="0")33             return;34
35 $(e.target).unbind();36         mouse.x=null;37         mouse.y=null;38         canmove = false;39         e.target.parentNode.parentNode.parentNode.style.zIndex="1000";40         $("#grayDiv").remove();41         $("body").append("<div id='grayDiv' style='position:absolute;left:0px;top:0px;background-color:rgba(0,0,0,0.8);z-index:999;width:"+window.innerWidth+"px;height:"+window.innerHeight+"px;'></div>");42
43         e.target.parentNode.parentNode.style.transform = "rotateX("+yd+"deg) rotateY("+xd+"deg)";44         $(outFrame).attr("loaded","0");45         outFace =$(e.target).prev();46         $(outFrame).appendTo("#grayDiv");47         $(outFrame).attr("scrolling","auto");48         outFrame.style.transform = "scale("+1+")";49         $(outFrame).css("height",window.innerHeight+"px");50         $(outFrame).css("width",window.innerWidth+"px");51         e.target.parentNode.parentNode.parentNode.style.zIndex="2";52         $("<div id='close' style='position:absolute;left:0;top:0;'>关闭</div>").appendTo("#grayDiv");53         $("#close").click(function(e){54 $(outFrame).insertBefore(outFace);55             $(outFrame).attr("scrolling","no");56             outFrame.style.transform = "scale("+targetWidth/1024+")";
57             $(outFrame).css("height",1024+"px");58             $(outFrame).css("width",1024+"px");59             outFrame = null;60             outFace = null;61             $("#grayDiv").remove();62 });63     }

View Code

---

css3 3D盒子代码参考:

http://www.html5tricks.com/html5-animated-cube.html

http://www.html5tricks.com/html5-3d-cube.html

---

chrome移动端模拟器效果[真机目前无效,留待以后查看问题]:

转载于:https://www.cnblogs.com/wangxinsheng/p/4356683.html

[应用][js+css3]3D盒子导航[PC端]相关推荐

  1. 【第五部分 | JS WebAPI】6:PC端网页特效与本地存储

    目录 | 概述 | PC端网页特效之三大系列 1-1 elementObj . offsetXXX 属性 1-2 elementObj . style 和 offset 的区别 1-3 案例:获取鼠标 ...

  2. JS判断页面是在pc端还是移动端打开方法

    好久没复习js了,今天正好之前的项目要重新写一套移动端的代码,之前的没有做移动端的兼容,故将遇到的问题写在上面: 在移动设备应用越来越广泛的今天,许多网站都开始做移动端的界面展示,两者屏幕尺寸差异很大 ...

  3. php自动识别pc和手机端并跳转,JS如何实现网站中PC端和手机端自动识别并跳转对应的代码...

    1.  代码场景: 描述:在项目中,一般我们会使用响应式布局的方式或者借助bootstrap等插件来做响应式的网站.但是根据业务的需求,手机端可能会在功能上精简很多,我们也会写两套代码,分别用来实现P ...

  4. html简单盒子代码,CSS3 3D盒子超简单制作

    这是我第一次在这里写文章,如果写得不好的话,请大家多多包涵一下. 在XX网学完CSS3之后,然后我懂了一个道理,XX网评论区域存在一个小明梗,这个梗是这样的:1+1=2, 2+2=4,问小明今年多少岁 ...

  5. html页面判断是手机端访问,JS 判断手机端和pc端后跳转对应页面

    判断手机端和pc端 (function () { var sUserAgent = navigator.userAgent; if (sUserAgent.indexOf('Android') > ...

  6. H5与js实现手机端和pc端自适应播放器

    h5视频播放 实现效果 自适应实现 实现 实现效果 pc端 手机端 自适应实现 1.允许网页自动调整,在html文件的头部添加一行viewport元标签 <meta name="vie ...

  7. js实现手机端、pc端相应的跳转

    2019独角兽企业重金招聘Python工程师标准>>> 只需要加入两行代码即可 1.加入压缩后的uaredirect.js function uaredirect(f){try{if ...

  8. js区分手机端和PC端

    方法一 if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {window.location.href = &q ...

  9. js判断手机端和pc端以及微信浏览器

    方法一: if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {console.log('this is wap ...

最新文章

  1. java jaxb 集合_java.util.List是一个接口,JAXB不能处理接口
  2. JavaSE的一些基础内容
  3. android studio zbar,Android Studio 0.2.6和ZBar项目设置
  4. java封装继承多态语法,GO语言中封装,继承,和多态
  5. Spring-Security (学习记录四)--配置权限过滤器,采用数据库方式获取权限
  6. java 线上运维_一次java应用线上运维实战
  7. 多线程与高并发(九):单机压测工具JMH,单机最快MQ - Disruptor原理解析
  8. 欢乐纪中A组周六赛【2019.3.30】
  9. MongoDB使用记录
  10. Shell—grep、sed、awk
  11. Redis字符串深入
  12. 宇宙最全的架构开发技术百科全书
  13. 地籍数据属性质检功能设计与实现
  14. curl myip.ipip.net curl ip.cn curl cip.cc
  15. 如何活让自己活得充实:其实很简单,把脑子里想的东西,变成行动,就能立刻充实起
  16. 计算机管理蓝屏不重启,windows10系统怎么设置蓝屏后不自动重启
  17. Centos更新内核
  18. Intel+Nvidia双显卡笔记本Linuxmint18下安装CUDA+OpenCV+Caffe的安装记录
  19. 洛谷P1033自由落体题解--zhengjun
  20. js 延期执行_javaScript 中怎么延迟执行一个方法?

热门文章

  1. FlipView和自定义值转换器
  2. linux命令nohup
  3. TCP/IP 建立连接的过程
  4. springboot-web开发(rest风格支持)
  5. 听说你们想学做品牌Gif动画海报?
  6. 2.14 文件和目录权限chmod
  7. PPP interface for lwIP
  8. LINUX正则表达式-- grep
  9. 一个权限管理模块的设计(转载)
  10. 国内首款商用LCA软件(eBalance)发布公告及培训通知