• 第 24 章 CSS3 变形效果[下]


    学习要点:

    1.3D 变形简介 

    2.transform-style

    3.perspective

    4.3D 变形属性

    主讲教师:李炎恢

    本章主要探讨 HTML5 中 CSS3 的变形效果,主要接着上节课的 2D 平面变形转换到 3D 立体变形。

    一.3D 变形简介

    之前我们学习了元素的平移、旋转、缩放和倾斜等功能。这些效果只是单纯在二维平面图上的,我们称之为 2D。那么其实 CSS3 也提供了三维立体的一些功能效果,并且目前较新的主流浏览器都比较支持,只不过比 2D 晚一些,对浏览器的版本要求也要高一些。

    由于 3D 是立体三维,在 x、y 轴的基础上一般会多出一个 z 轴,深入跃出轴。以下是 3D 变形的属性值表,如下:

    属性值

    说明

    translate3d(x,y,z)

    3D 方式平移元素,设置 x、y 和 z 轴

    translateZ(z)

    设置 3D 方式平移元素的 z 轴

    scale3d(x,y,z)

    3D 方式缩放一个元素

    scaleZ(z)

    设置 3D 方式缩放元素的 z 轴

    rotate3d(x,y,z,a)

    3d 方式旋转元素

    rotateX(a)

    分别设置 3D 方式的旋转元素的 x、y 和 z 轴

    rotateY(a)

    rotateZ(a)

    perspective(长度值)

    设置一个透视投影矩阵

    matrix3d(多个值)

    定义一个矩阵

     3D 变形比 2D 变形出来的要晚一些,所以如果需要兼容旧版本浏览器,可以对照这个表。具体如下:

    Opera

    Firefox

    Chrome

    Safari

    IE

    支持需带前缀

    15 ~ 22

    10 ~ 15

    12 ~ 35

    4 ~ 8

    支持不带前缀

    23+

    16+

    26+

    10.0+

    //兼容版本完整形式 

    -webkit-transform: translateZ(200px);
    -moz-transform: translateZ(200px);
    -o-transform: translateZ(200px);
    -ms-transform: translateZ(200px);
    transform: translateZ(200px);

    二.transform-style

    transform-style 属性是指定嵌套元素如何在 3D 空间中呈现。

    属性值

    说明

    flat

    默认值,表示所有子元素在 2D 平面呈现。

    preserve-3d

    表示子元素在 3D 空间中呈现。

     //一般设置到当前元素的父元素

    transform-style: preserve-3d;

    需要再配合后面的功能属性和变形配置,才能看到效果。同样,这个属性也需要加上各种厂商前缀。

    三.perspective

    perspective 是 3D 变形的重要属性,该属性会设置查看者的位置,并将可视内容映射到一个视锥上,继而投放到一个 2D 平面上。

    属性值

    说明

    none 

    默认值,表示无限的角度来看 3D 物体,但看上去是平的。

    长度值

    接受一个长度单位大于 0 的值,其单位不能为百分比。值越大,角度出现的越远,就好比你人离远一点看物体。值越小,正相反。

    //设置查看者的距离位置,一般设置在元素的父元素上

    perspective: 1000px;

    需要再配合后面的功能属性和变形配置,才能看到效果。同样,这个属性也需要加上各种厂商前缀。

    四.3D 变形属性

    我们运用前面 3D 功能属性 transform-style 和 perspective 来构建 3D 变形效果。

    1.translate3d(x,y,z)

    //需要 3D 位移的 HTML 结构,必须有父元素包含

    <div id="a">
        <img src="img.png" alt="" />
    </div>

    //CSS 部分,父元素设置 3D 呈现且设置透视距离

    #a {
        perspective: 1000px;
        transform-style: preserve-3d;
    }
    
    img {
        /*z 轴可以是负值*/
        transform: translate3d(300px,100px,240px);
    }

    2.translateZ(z)

    //可以单独设置 z 轴,z 轴可以是负值

    img {
        transform: translateZ(240px);
    }

    3.scale3d(x,y,z)

    //3D 缩放,单独设置无效,需要配合角度

    img {
        transform: scale3d(1,1,1.5) rotateX(45deg);
    }

    4.scaleZ(z)

    //单独设置 z 轴,x 和 y 轴默认为 1

    img {
        transform: scaleZ(1.5) rotateX(45deg);
    }

    5.rotate3d(x,y,z,a)

    //设置 3D 旋转,a 表示角度,xyz 是 0 或 1 之间的数值

    transform: rotate3d(1,0,0,45deg);

    6.rotateX(a)rotateY(a)rotateZ(a)

    //单独设置 3D 旋转

    transform: rotateX(45deg);
    transform: rotateY(45deg);
    transform: rotateZ(45deg);
    transform: rotateX(45deg) rotateY(45deg) rotateZ(45deg);

    最后一个 matrix3d 就不多说了,忽略。

    CSS3 还提供了 perspective-origin 属性来设置 3D 变形中的源点角度。该属性默认值为 50% 50%也就是 center center。

    属性值

    说明

    百分数值

    指定元素 x 轴或 y 轴的起点

    长度值

    指定距离

    left

    指定 x 轴的位置

    center

    right

    top

    指定 y 轴的位置

    center

    bottom

     //源点设置为右上方变形

    perspective-origin: top right;

    CSS3 还提供了一个在元素中设置透视的值 perspective(长度值),但它还是和在父元素设置有一定不同。因为父元素整个作为透视,而元素自己作为透视,导致不同。

    //具体测试看透视的距离

    img {
        transform: perspective(1000px) rotateY(45deg);
    }
  • 相关阅读:
    玉蓉方面膜加盟费多少 玉蓉方绿豆面膜怎么做代理 怎么加盟玉蓉方
    音频处理软件:GoldWave,太强大了,批量处理音频
    杂记 SY
    ThinkPHP函数详解--D函数:实例化数据模型类
    杂记
    如何选择jQuery版本 1.x? 2.x? 3.x?
    传值涉及到中文字符串时,字符编码的问题
    对数字进行分组处理:每10个为一组
    mac下安装protocol buffer并用python解析
    淘宝返利攻略
  • 原文地址:https://www.cnblogs.com/zfc2201/p/5450183.html
Copyright © 2020-2023  润新知