3D魔方场景实例
效果:
源码:
-----------------------------------------
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>3D魔方场景</title> <meta name="Keywords" content="关键词,关键词"> <meta name="description" content=""> <meta name="viewport" content="width=device-width,initial-scale=1"> <!--css,js--> <link rel="stylesheet" href="" /> <style type="text/css"> *{margin: 0;padding: 0;} #viewport {bottom: 0;left: 0;overflow: hidden;-webkit-perspective: 3000;perspective: 3000;position: absolute; right: 0;top: 0;background:#000;-moz-user-select: none; -o-user-select:none; -khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none; user-select:none;} #world {height: 240px;left: 50%;margin-left: -256px;margin-top: -256px;position: absolute; top: 50%;-webkit-transform-style: preserve-3d;transform-style: preserve-3d;width: 512px;} .wrapper{width: 100px;height: 100px;margin:10px; } .box{margin:0 0 0 150px} .wrapper .comment{width: 100px;height:100px;margin: auto;position: absolute;font-size: 30px;text-align:center;} .wrapper div.u{background:#ebeb05;-webkit-transform: rotateX(90deg) translateZ(50px);transform: rotateX(90deg) translateZ(50px);} .wrapper div.d{transform: rotateX(-90deg) translateZ(50px);-webkit-transform: rotateX(-90deg) translateZ(50px);background-color: #ebebeb;} .wrapper div.l{-webkit-transform: rotateY(-90deg) translateZ(50px);transform: rotateY(-90deg) translateZ(50px);background-color:#054494;} .wrapper div.r{-webkit-transform: rotateY(90deg) translateZ(50px);transform: rotateY(90deg) translateZ(50px);background-color:#059440;} .wrapper div.f{-webkit-transform: rotateX(0deg) translateZ(50px);transform: rotateX(0deg) translateZ(50px);background-color: #c50513;} .wrapper div.fll{width: 100px;height:100px;float: left;} .wrapper div.b{-webkit-transform: rotateX(180deg) rotateZ(180deg) translateZ(50px);transform: rotateX(180deg) rotateZ(180deg) translateZ(50px);background-color: #ea820e;} .wrapperR div.u{background:#ebeb05;-webkit-transform: rotateX(90deg) translateZ(-50px) translateY(-110px);transform: rotateX(90deg) translateZ(-50px) translateY(-110px);} .wrapperR div.d{transform: rotateX(-90deg) translateZ(-50px) translateY(110px);-webkit-transform: rotateX(-90deg) translateZ(-50px) translateY(110px);background-color: #ebebeb;} .wrapperR div.l{-webkit-transform: rotateY(-90deg) translateZ(-50px) translateX(-110px);transform: rotateY(-90deg) translateZ(-50px) translateX(-110px);background-color:#054494;} .wrapperR div.r{-webkit-transform: rotateY(90deg) translateZ(-50px) translateX(110px);transform: rotateY(90deg) translateZ(-50px) translateX(110px);background-color:#059440;} .wrapperR div.f{-webkit-transform: rotateX(0deg) translateZ(-60px);transform: rotateX(0deg) translateZ(-60px);background-color: #c50513;} .wrapperR div.fll{width: 100px;height:100px;float: left;} .wrapperR div.b{-webkit-transform: rotateX(180deg) rotateZ(180deg) translateZ(160px);transform: rotateX(180deg) rotateZ(180deg) translateZ(160px);background-color: #ea820e;} .wrapper1{} .wrapper2{} .wrapper3{margin: -220px 0 0 120px;} .wrapper4{margin: 10px 0 0 120px;} .wrapper5{margin:-210px 0 2px 10px;} .wrapper6{} .wrapper7{margin: -220px 0 0 120px;} .wrapper8{margin: 10px 0 0 120px} </style> </head> <body > <div id="viewport" > <div id="world" > <div class="box"> <div class="wrapper wrapperL wrapper1"> <div class="comment u"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment d" id="dd"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment l"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment r"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment f"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment b"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> </div> <div class="wrapper wrapperL wrapper2"> <div class="comment u"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment d" id="dd"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment l"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment r"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment f"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment b"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> </div> <div class="wrapper wrapperL wrapper3"> <div class="comment u"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment d" id="dd"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment l"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment r"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment f"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment b"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> </div> <div class="wrapper wrapperL wrapper4"> <div class="comment u"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment d" id="dd"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment l"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment r"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment f"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment b"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> </div> <div class="wrapper wrapperR wrapper5"> <div class="comment u"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment d" id="dd"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment l"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment r"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment f"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment b"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> </div> <div class="wrapper wrapperR wrapper6"> <div class="comment u"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment d" id="dd"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment l"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment r"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment f"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment b"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> </div> <div class="wrapper wrapperR wrapper7"> <div class="comment u"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment d" id="dd"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment l"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment r"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment f"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment b"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> </div> <div class="wrapper wrapperR wrapper8"> <div class="comment u"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment d" id="dd"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment l"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment r"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment f"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> <div class="comment b"> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> <div class="fll"></div> </div> </div> </div> </div> </div> <script type="text/javascript"> var world = document.getElementById( 'world' ), viewport = document.getElementById( 'viewport' ), d = 0, worldXAngle = 0, startX, startY, flag = false, worldYAngle = 0; window.addEventListener( 'mousewheel', onContainerMouseWheel ); window.addEventListener( 'DOMMouseScroll', onContainerMouseWheel ); window.addEventListener( 'mousedown', function(e){ startX = e.clientX; startY = e.clientY; flag = true; }); window.addEventListener( 'mousemove',function(e){ if(flag){ worldXAngle = startX - e.clientX + worldXAngle; worldYAngle = startY - e.clientY + worldYAngle; updateView(-worldXAngle/100 ,worldYAngle/100,d); } }); window.addEventListener( 'mouseup', function(e){ startX = e.clientX; startY = e.clientY; flag = false; }); function updateView(worldXAngle,worldYAngle,d) { var t = 'translateZ( ' + d + 'px ) rotateX( ' + worldYAngle + 'deg) rotateY( ' + worldXAngle + 'deg)'; world.style.webkitTransform = t; world.style.MozTransform = t; world.style.oTransform = t; }; function onContainerMouseWheel( event ) { event = event ? event : window.event; d = d - ( event.detail ? event.detail * -8 : event.wheelDelta / 2 ); updateView(-worldXAngle/100 ,worldYAngle/100,d); }; </script> </body> </html>