CSS解析
2022-09-21
次访问
CSS解析
盒子模型(box-sizing)
- 盒子模型包括了四部分,margin、padding、border、content
- 分为IE盒子模型(border-sizing)和标准盒子模型(content-sizing)
- ie 盒子模型的width/height 包含了padding和border
- 标准盒模型的width/height 不包含padding和border
position包含几种属性
- static:默认状态,没有定位,正常流
- fixed:生成绝对定位元素,相对于浏览器窗口定位
- absolute:生成绝对定位元素,相对于与static定位外的第一个父元素定位
- relative:生成相对定位元素
- sticky:粘性定位,sticky元素效果完全受制于父级元素们
CSS选择器及优先级
| 选择器 | 格式 | 优先级权重 |
|---|---|---|
| id选择器 | #id | 100 |
| 类选择器 | .className | 10 |
| 属性选择器 | a[ref=’eee’] | 10 |
| 伪类选择器 | li:last-child | 10 |
| 标签选择器 | div | 1 |
| 伪元素选择器 | li:after | 1 |
| 相邻兄弟选择器 | h1+p | 0 |
| 子选择器 | ul>li | 0 |
| 后代选择器 | li a | 0 |
| 通配符选择器 | * | 0 |
注:
- !important优先级最高
- 优先级相同情况下,最后出现的样式生效
- 继承得到的样式的优先级最低;
display的属性及作用
| 属性 | 作用 |
|---|---|
| none | 元素不显示,从文档流中移除 |
| block | 块类型,默认是父元素的宽度,可设置宽高,换行显示 |
| inline | 行内元素类型,默认宽度为内容宽度,同行显示 |
| inline-block | 默认宽度为内容宽度,可设置宽高,同行显示 |
| list-item | 向块元素一样显示,并添加样式列表标记 |
| table | 此元素会作为块级表格显示 |
| inherit | 从父元素继承display属性的值 |
BFC(块级格式化上下文)
定义
通俗来说BFC就是容器,用来管理内部块级元素,与这个区域外无关
特性
- BFC会阻止垂直外边距折叠
- BFC不会重叠浮动元素
- BFC可以包含浮动—-清除浮动
Flex布局
flex-direction:
决定主轴的方向(即项目的排列方向)
1 | .container { |
flex-wrap:
决定容器内项目是否可换行
1 | .container { |
flex-flow: (忽略)
flex-direction 和 flex-wrap 的简写形式
1 | .container { |
justify-content:
定义了项目在主轴的对齐方式。
1 | .container { |
align-items:
定义了项目在交叉轴上的对齐方式
1 | .container { |
align-content:
定义了多根轴线的对齐方式,如果项目只有一根轴线,那么该属性将不起作用
1 | .container { |
清除浮动
1 | // 父级div定义伪类:after和zoom |
link 和 @import 的区别
link并行下载
@import 引入的资源编译、加载、执行完成后才会执行后续
为性能提高建议使用link
CSS动画和过渡
transition
强调的是单一属性的动画效果,从开始到结束整个过程中间不会发生动画的转折
animation
强调的是多种动画属性的结合,能够有效的排列动画执行的时间 某时做某事 ,可以简单也可以复杂
CSS优化和提高性能
加载性能
- css压缩
- css单一样式
- 减少使用@import,建议使用link,因为前者是等待页面加载完成在加载CSS,后者是同时加载
选择器性能
- 避免使用通配规则
- 尽量少使用标签进行选择,用id或class
渲染性能
- 慎重使用高性能属性:浮动、定位
- 尽量减少页面的重排
- 属性值为0时不加单位
- 标准化各种浏览器前缀,带浏览器前缀的在前,标准属性在后
- 优化嵌套,避免层级太深
- 使用CSS雪碧图,减少http请求
