理解CSS | 青训营笔记

52 阅读3分钟
CSS发展历史
  • CSS1:解决网页排版布局和装饰问题,第一个有“层叠”概念的语言
  • CSS2:变现和内容(Html)分离
  • CSS2.1:对CSS2的修正、扩展,代替CSS2
  • CSS3:规范模块化发展‘样式丰富、酷炫;提高网站的可维护性以及性能速度

image.png

1.基础知识

层叠、优先级
层叠三大规则(优先程度递减): 1. 样式表来源

image.png

2. 原则其优先级

image.png

3. 源码位置

谁在后申明,谁生效

选择器:
名称作用
#idID选择器
Tagname类选择器或者标签选择器
.class类选择器
子选择器(>)匹配的目标元素是其他元素的直接后代
相邻兄弟组合器(+)匹配的目标元素紧跟在其他元素后面。
通用兄弟组合器(~)匹配所有跟随咋指定元素之后的兄弟元素。
复合选择器多个基础选择器可以连起来使用
属性选择器通过约束属性,div[data-title='aaa']
伪类选择器选中处于某个特定或相对于其父级或兄弟的位置的元素。
伪元素选择器匹配在文档中没有直接对应HTML元素的特定部分,后插入内容。
逻辑选择器较新的选择器:is():has():where():not()
  1. 选择器尽量少用id
  2. 尽量不要用!imporant
  3. 自己的样式加载在引用库样式的后面
继承

大部分具有继承特性的属性跟文本相关 可以使用inherit关键字显示指定一个属性值从其父元素继承

CSS的值和单位:

文字类;数值类;函数生成

盒模型

浏览器根据视觉格式化模型,将所有元素表示为盒子模型,css通过盒模型做layout

2.布局

image.png

常规流布局

常规流中的盒子:外部显示类型为block;外部显示类型为inline

块级格式化上下文(block formatting context)

如何触发一个盒子的BFC特性?以下条件满足任何一个即可
  • display:flow-root|inline-block;
  • position:absolute|fixed;
  • float:不为none;
  • overflow:不为visible
外边框塌陷 会产生外边距塌陷的情况:
  • 两个兄弟元素之间相邻的上下外边距
  • 父子元素之间相邻的上下外边距
  • 内容为空元素自己上下外边距相邻
消除外边距塌陷的方法:
  • 在两个相邻的上下外边距之间增加border、padding或者内联元素,使之不相邻
  • 在父子元素重叠时,除了上述方法,还可以设置父元素为BFC,使得父子不在同级BFC中
弹性盒子布局

Flexible Box Layout 是为了提供更加高效灵活的布局方式,在即便是宽高未知的情况下,也能排列和分割一个盒子内部的布局。而且在不同布局方向(横向/纵向)的调整更为灵活。

网络布局

2017年推出的Gird 布局可以定义由行和列组成的二位布局,然后将元素放置到网格中。元素可以只占其中一个单元格,也可以占据多行或多列。

定位Position

为了我们可以在文档流的基础上,让元素移动,做出更多灵活的改变。当position属性的取值非static的时候,可以使用top,right,bottom,left对其进行定位。
relative;absolute;fixed;sticky

3.层叠上下文

形成新的层叠上下文的条件(任一即可)
  • position:relative或absolute;并且z-index不是auto
  • position:fixed或sticky
  • filex或grid的子元素;并且z-index不是auto
  • opacity的值小于1
  • transform的值不为none
  • will-change的值不为通用值
编写z-index的建议:
  1. 使用css变量或者预处理语言的变量,管理z-index的值
  2. 将预设间隔设置10或100,方便后续的插入