HTML5学习笔记三

    科技2022-09-03  111

    HTML5学习笔记三

    一、3D转换

    特点:近大远小 遮挡不可见

    三维坐标系: x轴----向右是正值 向左是负值; y轴----向下是正值,上面是负值; z轴----向屏幕外是正值,向里面是负值。

    最常用到的功能是:3D位移和3D旋转

    1、3D位移

    ​ 语法格式:

    transform: translateX(100px):仅仅是在 x 轴上移动

    transform: translateY(100px):仅仅是在 y 轴上移动

    transform: translateZ(100px):仅仅是在 z 轴上移动

    简写:transform: translate3d(x, y, z):其中x、y、z 分别指要移动的轴的方向的距离

    代码演示:

    transform: translate3d(100px, 100px, 100px); /* 注意:x, y, z 对应的值不能省略,不需要填写用 0 进行填充 */ transform: translate3d(100px, 100px, 0);

    *注意:x, y, z 对应的值不能省略,不需要填写用 0 进行填充;

    ​ 简写中的3d的d不能大写,只能小写;

    ​ translateZ() 一般只使用px为单位,几乎不使用%百分比

    ​ translateZ() 与透视属性结合使用

    ​ translateZ() 值越大图像显示的越大,值越小图像显示的越小,当然,前提是透视perspective的值不变

    2、透视(perspective)

    ​ 语法:div{ perspective: npx;}

    ​ 代码演示:

    body { perspective: 1000px; }

    *注意:网页想要产生3D效果,必须要有透视(perspective)属性;

    ​ 透视也称为视距,就是人的眼睛到屏幕的距离;

    ​ 透视的值越小距离电脑屏幕越近,图像越大,越远图像越小;

    ​ 透视值的单位是像素 px;

    ​ 透视属性perspective 需要写到被观察元素的父盒子的样式里面,(最好写到它的父亲盒子里面,如果写到其他的祖先盒子里有可能会出现一些视觉错误,目前碰见过一次,还没搞明白具体原因);

    ​ translateZ与 perspecitve 的区别:perspecitve 给父级进行设置,translateZ 给元素本身进行设置,不过两者的原理相同,都是近大远小。

    3、3D旋转

    ​ 语法格式:

    transform: rotateX(45deg) – 沿着 x 轴正方向旋转 45 度

    transform: rotateY(45deg) – 沿着 y 轴正方向旋转 45 度

    transform: rotateZ(45deg) – 沿着 z 轴正方向旋转 45 度

    transform: rotate3d(x, y, z,deg) – 沿着自定义轴旋转 deg 为角度,x y z 的值可以是0~1之间 不过这条语句几乎不使用。

    代码演示:

    div { perspective: 300px; } img { display: block; margin: 100px auto; transition: all 1s; } /*X轴*/ img:hover { transform: rotateX(-45deg) } /*Y轴 img:hover { transform: rotateY(180deg) }*/ /* Z轴 img:hover { transform: rotateZ(180deg) }*/ /* 自定义轴(此时是以x轴 y轴的对角线为轴) img:hover { transform: rotate3d(1, 1, 0, 180deg) }*/

    *注意:3D 旋转指可以让元素在三维平面内沿着 x 轴、y 轴、z 轴 或者自定义轴进行旋转;

    ​ 通过左手准则来判断绕轴旋转的正方向,左手拇指指向轴的正方向,其余四指弯曲的方向就是绕轴旋转的正方向,旋转角度值为正数,即正方向旋转,值为负数即为反方向旋转;

    ​ 旋转角度的单位为----度 deg;

    ​ 绕Z轴旋转的效果与2D旋转效果相同;

    ​ transform: rotate3d(x, y, z,deg)该属性几乎不使用,三轴旋转足以实现大部分效果;

    ​ 进行旋转时必须先给父盒子设置透视属性,才能看出3D效果;

    4、3D呈现 transform-style

    语法格式:

    /*默认值,不开启子元素D效果*/ transform-style: flat; /*子元素开启3D立体空间效果*/ transform-style: preserve-3d;

    *注意:该属性用于控制嵌套的盒子中,当父元素开启3D效果时,子元素是否保持自身的3D效果;

    ​ 该属性要写到父级元素中,但作用的对象是子元素;

    Processed: 0.009, SQL: 9