重要链接

CSS 选择器


开始

每个元素被视为一个“盒子”,每个盒子都有这几部分组成:

  • content:盒子的内容显示区域,子元素就在这里
  • padding:border与content之间的区域
  • border:盒子的”边界“,盒子的定义在此止步
  • margin:盒子与”外界“的区域

盒子的大小由什么决定

一个盒子的大小,主要由于对盒子自身的”限制“(extrinsic sizing),或者由content内的子元素大小(intrinsic sizing)与行为决定的

其中”限制“指的是:如果盒子明确限制了宽度,高度,无论子元素尺寸多大,都不会撑开这个盒子,而是会溢出(overflow)。 还有一种“限制”是:看似盒子没有给定限制的尺寸,但是由代理样式表默认赋值给一些属性,让这个盒子有了限制的大小,只不过这个大小由父元素决定。例如div,虽没给任何属性,但会默认display为block的,block会导致宽度由父元素决定,高度由盒子子元素的高度决定

如果没有限制父盒子的尺寸(例如width:min-content),那么其大小就会由子元素的大小决定。

溢出行为

在父盒子限制大小,子元素超过父元素的尺寸过后,会溢出父盒子(overflow)如果设置了溢出规则,例如 overflow: auto 或 overflow: scroll,浏览器自动出现的滚动条是会出现在content和padding之外,border之内的。

Controll the box model

每种浏览器都有各种的用户代理样式表(use agent style sheet),这个表用于给每个没有设置样式的盒子设置默认值,

例如他会给使用display的元素设置默认值,div元设置为block,li设置为list-item,span设置为inline

display的各个属性值

盒子宽度的定义会根据box-sizing的属性不同,而不同

在box-sizing为content-box的时候,盒子定义的width为content的宽度,但实际的宽度为content+padding+border的长度

但在box-siing为border-box的时候,盒子定义的width为content+padding+border,也是实际看到的宽度

用户代理表所设置的默认box-sizing为content-box,但现在常用的是border-box