《CSS 知识总结》

167 阅读2分钟
浏览器渲染原理
根据HTML构建HTML树(DOM)

根据CSS构建CSS树(CSSOM)

将两棵树合成一棵树进行渲染(render tree)

Layout布局(文档流、盒模型、计算大小和位置)

Paint绘制(把边框颜色、文字颜色、阴影等画出来)

Compose合成(根据层叠关系展示画面)
CSS动画的两种做法(transition 和 animation)

1.0 transition(过渡)

作用:补充中间帧,会自动把中间帧补齐,可以用来做简单的小动画。 如html里面对一个span标签设置以下css:

    span {
        display: inline-block;
        margin: 200px;
        width: 50px;
        height: 50px;
        background: red;
        transition: all 1s;
    }
    
    span:hover {
        transform: scale(1.2);
    }

transition属性有四个值:

transition:width 1s linear 0s;
 第一个过度什么就写什么
 第二个是过渡的时长
 第三个是以怎样的形式过度:比如很快还是很慢ease、ease-in
 第四个是延迟过度,等几秒钟再动的意思
 但是并不是所有属性都能过渡

2.0 animation(动画)

作用:制作动画

animation要配合@keyframes使用才能完成一个小动画

@keyframes用来定义动画

animation是来调用动画的,不调用动画还不能使用 animation: heart 3s alternate infinite; animation可以有多个值 第一对应的是动画的名字 第二个是动画时长 第三个是以怎样的形式过度:比如很快还是很慢ease、ease-in 第四个是延迟时间 后面还可以加alternate(轮流)和forwards(停在结束状态)以及infinite(无限循环动画)

    .heart {
        display: inline-block;
        margin: 300px;
        position: relative;
        animation: heart 3s alternate infinite;
    }
    
    @keyframes heart {
        from {
            transform: scale(0);
        }
        to {
            transform: scale(1.5);
        }
    }

transition 和 animation的区别:

   transition 需要触发条件,不能在页面加载时自动发生

  transition 默认只能执行一次,再次执行需要再次触发

  transition 只有开始和结束两个状态,不能设置中间的状态

  animation 在页面加载时自动执行,并且可以像flash动画一样设置中间的关键帧