《深入CSS》技术学习总结|青训营

50 阅读2分钟

一、选择器的特异度

1. #nav .list li a:link
2. .hd ul .links a

在 1 中,id 选择器有 1个(#nav),类与伪类共有 2个(.list 与 :link),元素与伪元素共有 2个(li 与 a)。所以在 1 中的特异度为 122。 在 2 中,id 选择器有 0个,类与伪类共有 2个(.hd 与 .links),元素与伪元素共有 2个(ul 与 a)。所以在 2 中的特异度为 22。 因为,在 1 中的特异度为 122 大于 在 2 中的特异度为 22 。 所以,在 2 中的选择器的优先级更高。

二、继承

某些属性会自动继承它父元素的计算值,除非显式指定一个值

  1. 显示继承:inherit 让原本不可继承的可以继承
  2. css中每个属性都有一个初始值。我们也可以使用 initial 这个关键字重置为初始值。

三、布局

  • 布局是什么:确定内容的大学和位置的算法,依据元素、容器、兄弟节点和内容信息来计算
  • 布局方式:
  1. 常规流(行级、块级表格布局、FlexBox、Grid布局)
  2. 浮动(文字环绕)
  3. 绝对定位
  • 盒子模型(基础):把一切元素理解成一个一个的盒子,相当于一个容器,每个盒子content都有

高度(height)和宽度(width)。制定高度时,百分数才会生效宽度

padding:有四个方向,指定元素四个方向的内边距

边框border:三种属性四个方向

外边距margin:指定元素四个外边距

  • 盒子模型的常见两种布局规则:块级(不和其他盒子并列摆放,适用所有的盒模型属性)、行级(和其他行级盒子一起放在一行或拆开成多行,盒模型中的width、height不适用)

行级排版上下文:只包含行级盒子的容器会创建一个IFC

IFC内的排版规则:

  • 盒子在一行内水平摆放
  • 一行放不下时,换行显示
  • text-align决定一行内盒子的水平对齐
  • vertical-align决定一个盒子在行内的垂直对齐
  • 避开浮动(float)元素

块级排版上下文

某些容器会创建一个BFC:

  • 根元素
  • 浮动、绝对定
  • 位、inline-blockFlex子项和Grid子项
  • overflow值不是visible的块盒
  • display:flow-root