CSS基础(4) | 青训营笔记

84 阅读2分钟
2. 3D转换

3D移动在2D移动的基础上多加了一个可以移动的方向,就是z轴方向(垂直于屏幕指向你自己是正方向)。

2.1 3D移动 translate3d
<style>
            transform: translateX();
            transform: translateY();
            transform: translateZ();
            transform: translate3d(x, y, z);
</style>
2.2 透视 perspective
  • 如果想要在网页产生3D效果需要透视(理解成3D物体投影在2D平面内)
  • 透视我们也成为视距:就是人的眼睛到屏幕的距离。透视是模拟一个人眼去看。
  • 距离视觉点跃进的在电脑平面成像越大,越远则成像越小
  • 透视的单位是像素(px)
  • 透视写在被观察元素的父级元素上面
2.3 3D旋转 rotate
<style>
    transform: rotateX('angle');
    transform: rotateY('angle');
    transform: rotateZ('angle');
    transform: rotate3d(x, y, z, deg);
</style>
  • 可以增加perspective来增加立体感
  • 方向:利用左手法则,四指所指方向就是正方向
  • transform: rotate3d(x, y, z, deg); 是围绕三个x, y, z的矢量和方向旋转deg度
2.4 3D呈现 transform-style
  • 控制子元素是否开启三维立体环境
  • transfolm-style:flat; 子元素不开启3D立体空间 (默认值)
  • transfolm-style:preserve-3d; 子元素开启3D立体空间
  • 代码写给父级元素,但是影响过的是子盒子
  • 如果不开启3D立体空间,就算是通过3D转换得到了类似于3D的效果,也是由2D图像变化显示出来的伪3D效果

十九、动画 animation

动画是CSS3中具有颠覆性的特征之一,可通过设置多个节点来精确的控制一个或一组动画,长用来实现复杂的动画效果。

相比较过度,动画可以实现更多的变化,更多控制,连续播放等效果。

1.动画的使用
  1. 先定义动画

    用keyframes(关键帧)定义动画

    @keyframes 动画名称{
        0% {
            
        }
        50% {
            
        }
        100% {
            
        }
    }
    
  2. 再调用动画

    用 animation-name: 调用动画,再用 animation-duration: 来设置持续时间

    animation(动画)

2.动画常用属性

image-20230507163110935

  • lanimation-timing-function: 还有linear等等好多曲线,linear是匀速
  • animation-play-state: pause; 的意思是当鼠标放上去就暂停;
  • animation-fill-mode: forwords; 的意思是动画结束后保持现在的位置;
3.速度曲线

animation-timing-function: ;规定动画的速度曲线,默认是“ease”

image-20230510220647470

steps(n),将动画平均分成n步,逐步进行

4.复合写法
<style>
    animation: 动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或者结束的状态
    //动画名称和持续时间是必须的
</style>

二十、浏览器私有前缀

浏览器私有前缀是为了兼容老版本的写法,比较新版本的浏览器无需添加。

1.私有前缀
  • -moz- : 代表Firefox浏览器私有属性
  • -ms- : 代表ie浏览器私有属性
  • -webkit- : 代表safari、chrome浏览器私有属性
  • -0- : 代表Opera浏览器私有属性
2.提倡的写法
<style>
    div {
        -moz-border-radius: 10px;
        -webkit-border-radius: 10px;
        -o-border-radius: 10px;
        border-radius: 10px;
    }
    </style>