最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 2d和3d变换

    正文概述 掘金(HaooaH)   2020-12-06   609

    transform-origin

    • 将当前变换原点(x1,y1,z1) 变为 (x1 + x2,y1 + y2,z1 + z2)
      • % px em
      • 水平方向取值,相对元素的宽,left center bottom
      • 垂直方向取值,相对元素的高,top center bottom
        • 元素左上角为 0% 0%,右下角为 100% 100%

    transform

    2D变换

    translate()

    rotate()

    • 绕变换原点旋转
      • 注意仅有一个参数

    scale()

    • scalex() + scaley() = scale(x,y)

    2d和3d变换

    • scale(1,1) scale(2,1)
      • 同一设置了100px * 100px的逻辑像素,转换为物理像素,然后显示到我们的电脑屏幕上,后者的宽比前者大一倍
      • 首先我们假设原来x 坐标轴1刻度可以表示1px(逻辑像素),现在经过scale(2,1)使得坐标轴刻度增大,也就是现在 1刻度可以表示2px(逻辑像素),而scale(2,1)的发挥作用后,该元素从原来 100px * 100px 变换成 200px * 100px,然后再将其转为物理像素,显示在屏幕上
      2d和3d变换 2d和3d变换
    • 后一个scale以前一个为基础,再对坐标轴刻度缩放
    • 所有缩放过的方向都会保留效果(雁过留声)
    - 原来的缩放的有效,-45deg旋转后会改变变换原点,这时的缩放也有效
    

    skew

    • 它的坐标轴比较特殊,垂直方向为x轴,水平方向为y轴

    2d和3d变换 2d和3d变换

    • 倾斜y,保持宽度

    2d和3d变换

    • 倾斜x,保持高度

    2d和3d变换

    matrix

    参考文章:

    • 张大大:www.zhangxinxu.com/wordpress/2…
    • matrix分解演示:www.zhangxinxu.com/study/20120…
    • 变换矩阵 * 坐标矩阵 = 新坐标矩阵

    2d和3d变换

    • transform: matrix(1, 0, 0, 1, 30, 30); === transform: translate(30px, 30px);

    3D变换

    translate3d()

    rotateX() / rotateY() / rotateZ()

    • 绕当前坐标轴旋转,n > 0时的旋转方向如下

    2d和3d变换

    rotate3d

    2d和3d变换

    scale3d

    matrix3d()

    2d和3d变换

    2d和3d变换

    perspective

    • 舞台元素上的,perspective:npx
      • 给整个舞台设置了一个眼睛,一般舞台元素有很多子元素
    • 当前动画元素上的,transform:perspective(npx)
      • 给该元素设置了眼睛,一般是父容器的包含很多子容器,然后给子容器设置
    • Screen可以当作浏览器或屏幕,我们看到的是Screen的像
      • tanslateZ(),可以改变当前元素与Screen的距离
      • perspective:表示眼睛距离屏幕的距离
    • 一开始我们没设置perspective,即none时,正常效果显示
    • 而当我们设置了perspective时,屏幕上的成像是由我们的眼睛发射射线,经过白圈而投影到Screen上的像就是我们所看到的实际效果
      • translateZ:0,有perspective时,白圈和黑圈重合,正常效果
      2d和3d变换
      • translateZ > 0,且有perspective时,眼睛看向黑圈,发射的光线,经过黑圈后,成像在Screen的白圈就是我们看到的实际效果
      2d和3d变换
      • 当有translateZ < 0, 且有perspective时,眼睛看向黑圈,发射的射线,经过Screen形成的白圈就是我们实际看到的效果
      2d和3d变换

    perspective-origin

    • 变换眼睛的位置,默认center、center
      • n% ,水平方向的width * n%,垂直方向的height * n%
      2d和3d变换

    preserve-3d

    • 一般而言,该声明应用在3D变换的兄弟元素们的父元素上,也就是舞台元素
      • 默认为flat,也就是2D渲染层,指明3D渲染层后,该元素有立体效果

    木马旋转

    • 原博文案例复现地址:www.zhangxinxu.com/wordpress/2…

    • 原博文地址:www.zhangxinxu.com/wordpress/2…

    • html结构:舞台包含很多子元素

    • 舞台css,首先加上perspective,使得translateZ可以生效,然后加上transform-style:presever-3d使得舞台变为3d渲染层

    • 子元素css:9张照片平分360deg,然后每张宽度是128px,计算出translateZ应该是多少

    2d和3d变换

    • 正视图看translateZ的肉眼看上去效果不明显

    2d和3d变换

    • 但设置眼睛为50% 100%,用仰视的视角解释translateZ,其实图片是沿着图中所画的Z轴平移我们所设置的像素

    2d和3d变换

    • 完整代码
    <div class="stage">
        <img src="../img/mm1.jpg" class="piece" >
        <img src="../img/mm2.jpg" class="piece" >
        <img src="../img/mm3.jpg" class="piece" >
        <img src="../img/mm4.jpg" class="piece" >
        <img src="../img/mm5.jpg" class="piece" >
        <img src="../img/mm6.jpg" class="piece" >
        <img src="../img/mm7.jpg" class="piece">
        <img src="../img/mm8.jpg" class="piece">
        <img src="../img/mm9.jpg" class="piece">
    </div>
    
    .stage {
          padding: 50% 50%;
          width: 128px;
          height: 96px;
    
          margin: 0 auto;
          background-color: #f0f0f0;
          perspective: 800px;
          perspective-origin: 50% 100%;
          transform-style: preserve-3d;
    
          position: relative;
          top: 0;
        }
        .piece {
          position: absolute;
          width: 128px;
          box-shadow: 0 1px 3px rgba(0,0,0,.5);
        }
    .piece:nth-child(1) { 
      transform: rotateY(   0deg ) translateZ(195.839px);
    }
    .piece:nth-child(2) { 
      transform: rotateY(  40deg ) translateZ(195.839px); 
    }
    .piece:nth-child(3) { 
      transform: rotateY(  80deg ) translateZ(195.839px); 
    }
    .piece:nth-child(4) { 
      transform: rotateY( 120deg ) translateZ(195.839px); 
    }
    .piece:nth-child(5) { 
      transform: rotateY( 160deg ) translateZ(195.839px); 
    }
    .piece:nth-child(6) { 
      transform: rotateY( 200deg ) translateZ(195.839px); 
    }
    .piece:nth-child(7) { 
      transform: rotateY( 240deg ) translateZ(195.839px); 
    }
    .piece:nth-child(8) { 
      transform: rotateY( 280deg ) translateZ(195.839px); 
    }
    .piece:nth-child(9) { 
      transform: rotateY( 320deg ) translateZ(195.839px); 
    }
    

    起源地下载网 » 2d和3d变换

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元