第四周学习
包含块(containing block):每个盒子都有包含块,包含块决定可盒子的排列区域。衡量设计稿尺寸的时候,往往使用的是边框盒,但设置width和height,则设置的是内容盒。z-index可以是负数,如果是负数,浮动元素,常规流元素在其前面。在常规流中,块盒在其包含块中居中,可以定宽,左右设置为auto。如果元素没有在行盒中,浏览器将文字包裹为行盒,该元素叫做匿名行盒。2)包含块的高度不
盒模型的应用
改变宽高范围
默认情况下设置内容盒的宽高
衡量设计稿尺寸的时候,往往使用的是边框盒,但设置width和height,则设置的是内容盒
- 精确计算
- CSS3:box-sizing
改变背景覆盖范围
默认情况下,背景覆盖边框盒
background-clip进行改变
溢出处理
overflow,控制内容溢出边框盒后的处理方式
断词规则
word-break,会影响文字在什么位置被截断换行
normal:普通。CJK字符(文字位置截断)、非CJK字符(单词位置截断)
break-all:在所有位置截断
keep-all 保持所有。所有文字在单词之间截断
空白处理
超出部分用圆点处理的方法
white-space:nowrap(不换行)
overflow:hidden
text-overflow:ellipsis
行盒的盒模型
常见的行盒:包含具体内容的元素
span、strong、em、i、img、video、audio
显著特点:
- 盒子随着内容延伸
- 行盒不能设置宽高
调整行盒的宽高,需要通过调试文字大小,宽度间接调整
- 内边距
水平方向有效,垂直方向仅会影响背景,不会占据空间
- 边框
水平方向有效,垂直方向仅会影响背景,不会占据空间
- margin
水平方向有效,垂直方向仅会影响背景,不会占据空间
行块盒
display: inline-block的盒子
- 不独占一行
- 但所有尺寸都有效
空白折叠
空白折叠,发生在行盒(行块盒)内部或行盒(行块盒)之间
可替换元素 和非可替换元素
大部分元素,页面上显示的结果,取决于元素内容,称为不可替换元素
少部分元素页面上显示的结果,取决于元素属性,称为可替换元素
可替换元素:img、video、audio
绝大部分可替换元素为行盒
可替换元素类似于行块盒,盒模型中所有尺寸都有效
常规流
盒模型:规定单个盒子的规则
视觉格式化模型(布局规则):页面中的多个盒子排列规则
视觉格式化模型,大体上将盒子的排列分成三种情况:
- 常规流
- 浮动
- 定位
常规流布局
常规流、文档流、普通文档流
所有元素默认情况下都属于常规流布局
总体规则:块盒独占一行,行盒水平依次排列
包含块(containing block):每个盒子都有包含块,包含块决定可盒子的排列区域。
绝大情况下:盒子的包含块,为其父元素的内容盒
块盒
- 每个块盒的总宽度,必须刚好等于包含块的宽度
宽度的默认值为auto
margin:默认值为0,但可设置为auto
auto:将剩余空间吸收掉
width的吸收能力强于margin
若宽度、边框、内边距计算后仍然有剩余空间,该空间被margin-right全部吸收
在常规流中,块盒在其包含块中居中,可以定宽,左右设置为auto。
- 每个块盒垂直方向上的auto值
height:auto,适应内容的高度
margin,表示0
- 百分比取值
padding、宽高、margin可以取值百分比
所有百分比相对于包含块的宽度
高度的百分比:
1) 包含块的高度是否取决于子元素的高度,设置百分比无效
2)包含块的高度不取决于子元素的高度,百分比相对于父元素的高度
- 上下外边距的合并
两个常规流块盒,上下边距相邻且相等时,会进行合并
当上下边距不相等时,取最大值
- 父子元素的外边距合并
相邻也要合并
浮动
应用场景
- 文字环绕
- 横向排列
浮动的基本特点
修改float属性值:
- left:左浮动,元素靠上靠左排列
- right:右浮动,元素靠上靠右排列
- 默认值为none
当元素使用浮动后,默认为块盒
浮动元素的包含块和常规流一样,为父元素的内容盒
盒子尺寸
- 宽度为auto时,适应内容宽度
- 高度为auto时,与常规流一致,适应内容的高度
- margin为auto时,表示为0;
- 边框,内边距,百分比设置相当于父元素内容盒
盒子排列
- 左浮动盒子靠上靠左排列
- 右浮动盒子靠上靠右排列
- 浮动盒子在包含块中排列时,会避开常规流盒子
- 常规流块盒在排列时,,无视浮动盒子
- 行盒在排列时会避开浮动盒子
- 外边距合并并不会发生
如果元素没有在行盒中,浏览器将文字包裹为行盒,该元素叫做匿名行盒
高度坍塌
高度坍塌的根源:常规流的自动高度,不考虑浮动盒子
清除浮动,涉及CSS属性:clear
- 默认值:none
- left:清除左浮动,该元素必须出现在前面所有左浮动盒子的前面
- right:清除右浮动,该元素必须出现在前面所有右浮动盒子的前面
- both:清除所有浮动,该元素必须出现在前面所有浮动盒子的前面
定位
手动控制元素在包含块中的精准位置
涉及的CSS属性:position
position属性
- 默认值:static,静态定位(不定位)
- relative:相对定位
- absolute:绝对定位
- fixed:固定定位
一个元素,只要position取值不是static,认为该元素是一个定位元素
定位元素会脱离文档流(相对定位除外)
一个脱离了文档流的元素:
- 文档流中的元素摆动时,会忽略脱离了文档流的元素
- 文档流中元素计算自动高度时,会忽略脱离了文档流的元素
相对定位:
不会导致元素脱离文档流,只是让元素在原来位置上偏移
可以通过四个CSS属性对其设置偏移:
left、right、bottom、top
盒子的偏移不会对其他盒子造成影响。
绝对定位
- 宽高为auto,适应内容
- 包含块变化:找祖先元素中第一个定位元素,该元素的填充盒为其包含块。
若找不到,则它的包含块为整个网页
固定定位
其他情况和绝对定位一致
包含块不同:固定为视口(浏览器的可视窗口)
定位下的居中
某个方向居中:
- 定宽(高)
- 将左右(上下)距离设置为0
- 将margin设置为auto.
绝对定位和固定定位中,margin设置为auto,会自动吸收剩余空间
多个定位元素重叠时
堆叠上下文
设置z-index,通常情况下,该值越大,越靠近用户
边框弧度:border-redius:50%
后边出现的在前(可以自设置)
只有定位元素设置z-index有效
z-index可以是负数,如果是负数,浮动元素,常规流元素在其前面
补充
- 绝对定位,固定定位是块盒
- 绝对定位,固定定位不是浮动
- 没有外边距合并
更多推荐


所有评论(0)