立方体效果

初始值:景深和旋转 transform:perspective(1000px) rotateY(-60deg) rotateX(30deg)

点击鼠标设定初始值x=30 y=-60;
var disX=oEvent.clientX-x;
var disY=oEvent.clientY-y;
样式设定:
上 transform:translateY(-150px) rotateX(90deg);
下 transform:translateY(150px) rotateX(-90deg);
前 transform:translateZ(150px);
后 transform:translateZ(-150px);
左 transform:translateX(-150px) rotateY(90deg); }
右 transform:translateX(150px) rotateY(-90deg); }

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    *{ margin:0; padding:0; }
    .box{ width:300px;
          height:300px;
          margin:100px auto;
          position:relative;
          transform-style:preserve-3d;
          transition:1s all ease ;
          transform:perspective(1000px) rotateY(-60deg) rotateX(30deg)
    }
    .box div{
        position:absolute;
        left:0;
        top:0;
        width:100%;
        height:100%;
        line-height:300px;
        text-align:center;
        font-size:50px;
        color:#fff;
        opacity:0.5;
    }
    .box .front{
        background:red;
        transform:translateZ(150px);
    }
    .box .back{
        background:yellow;
        transform:translateZ(-150px);
    }
    .box .left{
        background:blue;
        transform:translateX(-150px) rotateY(90deg); }
    .box .right{
        background:green;
        transform:translateX(150px) rotateY(-90deg); }
    .box .top{
        background:pink;
        transform:translateY(-150px) rotateX(90deg);
    }
    .box .bottom{
        background:#f84540;
        transform:translateY(150px) rotateX(-90deg);
    }
</style>
<script>
    window.onload=function(){
        var oDiv=document.querySelector('#box');
        var x=30;
        var y=-60;
        oDiv.onmousedown=function(ev){
            var oEvent=ev||event;
            var disX=oEvent.clientX-x;
            var disY=oEvent.clientY-y;
            document.onmousemove=function(ev){
                var oEvent=ev||event;
                var x=oEvent.clientX-disX;
                var y=oEvent.clientY-disY;
                oDiv.style.WebkitTransform='perspective(1000px) rotateY('+x+'deg) rotateX('+(-y)+'deg)';
                document.onmouseup=function(){
                    document.onmousemove=null;
                    document.onmouseup=null;
                };
                return false;
            };
        };
    };
</script>
<body>
<div id="box" class="box">
    <div class="front">前</div>
    <div class="back">后</div>
    <div class="top">上</div>
    <div class="bottom">下</div>
    <div class="left">左</div>
    <div class="right">右</div>
</div>
</body>
</html>
<script>

</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • perspective的介绍 指定观察者距离z=0平面的距离,为元素及其内容应用透视变换。当值为0或负值时,无透视...
    sunny519111阅读 9,078评论 1 6
  • 看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印象,因...
    DCbryant阅读 5,846评论 0 4
  • 1、属性选择器:id选择器 # 通过id 来选择类名选择器 . 通过类名来选择属性选择器 ...
    Yuann阅读 5,561评论 0 7
  • CSS里transform变形这个属性有点学习难度,尤其在CSS3里加上了3D效果之后,2维变3维学习成本更是成倍...
    张歆琳阅读 28,156评论 5 81
  • 专家认为,当我们决定减肥以后,除以选择适合自己的瘦身方式外,还需要考虑一个很重要的因素——思维。当使用控制饮食和参...
    一颗梧桐树阅读 5,084评论 3 14