《CSS 知识总结》

124 阅读3分钟

浏览器渲染过程

大致过程如下:

1、根据HTML构建HTML树(DOM)Document Object ;

DOM 树的构建是一个是一个深度优化遍历的过程,当前节点的子节点全部构建才会构建下一个节点,DOM的根节点为document 对象。

DOM 树的生成过程会被css和js加载执行阻塞,解析过程的结束会触发DOMContentLoaded 事件。

2、根据CSS构建CSS树(CSSOM);

3、将两棵树合并一颗渲染树;

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

5、paint 绘制(把边框颜色,文字颜色,阴影等画出来)。

6、compose合同(根据层叠关系展示画面)。

CSS 动画的两种做法(transition 和 animation)

transition - CSS(层叠样式表) | MDN
animation - CSS(层叠样式表) | MDN

  • ransition过渡 (不是所有属性都能进行Transition)

作用:补充中间帧

语法:transition: 属性名 | 时长 | 过渡方式 | 延迟

注意:指定第一个数字默认指定为时长,第二个数字默认才是延迟时间 拓展:1s = 1000ms(毫秒)

过渡方式:linear | ease | ease-in | ease-out | ease-in-out | cubic-bezier | step-start | step-end | steps
transform的四种用法:

1、位移:translate

2、缩放:scela

3、旋转:roate

4、倾斜:skew

一般transition配合transform使用

animation

@keyframes 完整语法

一种 from to

@keyframes 名称{
from{
transform:translateX(0%)
}
to{
transform:translateX(100%)
}
}

另一种百分数:

@keyframes 名称
{
    0%{top:0; left:0;}
    '''
    100%{top:100%; left:100%;}
}

animation用法

animaion:时长|过度方式|延迟|方向|填充模式|是否暂停|动画名

时长:1S或1000ms

过渡方式:跟transition 取值一样,如inear

次数:3或者2.4 或者infinite(变大)

方向:reverse|alternate|alernate-reverse

填充方式:none|forwrds|backwards|both

是否暂停:paused |running

绝对定位:position

static 默认行 得在文档流里

relative 相对定位 不脱离文档流 在父元素里

absolute 绝对定位 定位于祖先的非static

fixed 固定定位 定位基准于 viewport

sticky 粘带定位

注 有absolute 一般补一个 relative

写了 absolute或 fixed ,一定补top和left

sticky 的兼容性差

盒子模型

所有HTML元素可以看作盒子,在CSS中,"box [model]"这一术语是用来设计和布局时使用
CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:外边距([margin]),边框(border),内边距(padding),和实际内容(content)。

盒子模型分类

1 标准盒子模型
content-box 宽度只包含content (内容根才是盒子的边界)
2 怪异盒子模型
border-box 宽度包含到border (边框才是盒子的边界)

文档流 Normal Flow

文档流动的方向; inline 内联 元素从左到右 到达最右边才会达到,不接受宽度设置,可以由line-height间接确定高度
block 块 每个都是一行,默认自动就算宽度,可以用width指定。不要设置width=100%,高度与内部文档流元素决定,但是也可以设置height。
inline-block 从左到右,到达最右边不会分成两段,。宽度结合前两者特点可以设置width,高度与block类似,可以设置height。