transform

作者: 招展君 | 来源:发表于2017-08-18 22:22 被阅读55次

    源码在这里可以看到

    景深

    刚突然知道css3里面竟然有景深这么一个好玩的api,然后就拿出来试了下。

    perspective:pxNum 景深
    perspective-origin:left | top 属性定义 3D 元素所基于的 X 轴和 Y 轴

    3.gif
    div
    {
    perspective: 500;
    -webkit-perspective: 500; /* Safari 和 Chrome */
    perspective-origin:20% 30% 
    }
    

    需要注意的是 这个属性是给3d转换的dom容器加的,而不是给某一个具体的3d转换的dom加的。


    translate里属性的执行顺序

    属性书写的先后顺序不同,也会造成最终的表现形式不同
    结论就是写在后面的先执行。

    2.gif
    <div class="div1">
        <div class="body" data-dom="1"></div>
    </div>
    <div class="div1">
        <div class="body"data-dom="2"></div>
    </div>
     
    this.style.transform = 'scale(.5) translateX(50px)';
    
    this.style.transform = 'translateX(50px) scale(.5)';
    

    translateX等虽然让元素发生了位移,但是是不会改变元素的中心点

    1.gif
    this.style.transform = 'rotate(180deg) translateX(50px)';
    
    this.style.transform = 'translateX(50px) rotate(180deg)';
    
    

    transform-origin

    区别于景深,它是作用于变换的dom上
    rotate scale skew 其实是围绕transform-origin指定的位置进行转换的,之所以看起来是围绕中心点,是因为center是这个css的默认值而已

    4.gif
    .body{
        width:100px;
        height:100px;
        background:red;
        transition:1s;
    }
    .body1_1{
       transform-origin: left top;
    }
    <div class="div div1">
        <div class="body body1 body1_1" data-dom="1"></div>
    </div>
    <div class="div">
        <div class="body body1"data-dom="2"></div>
    </div>
    

    transform-origin

    这个css其实有第三个参数,是用来设置translate3d的变换原点


    5.gif
    .body2_1{
         transform-origin:center center -30px;
    }
    
    <div class="div">
        <div class="body body2" data-dom="1"></div>
    </div>
    <div class="div">
        <div class="body body2 body2_1"data-dom="2"></div>
    </div>
    
    this.style.transform = 'rotateX(180deg)';
    

    transform-style

    是否保留子元素(不是子孙元素)的3d变化(是否是真3d空间)


    6.gif
    .body3_1{
         transform-style: preserve-3d;
             /**flat 不保留**/
    }
    .body3_body{
         width:100px;
         height:100px;
         background:#0ff;
         transform: rotateX(45deg);
    }
    
    <div class="div">
        <div class="body body3" data-dom="1">
            <div class="body3_body"></div>
        </div>
    </div>
    <div class="div">
        <div class="body body3 body3_1"data-dom="2">
            <div class="body3_body"></div>
        </div>
    </div>
    
    this.style.transform = 'rotateY(180deg)';
    

    以上均是看妙味课程后的笔记。 妙味大法好!

    相关文章

      网友评论

        本文标题:transform

        本文链接:https://www.haomeiwen.com/subject/eyqzrxtx.html