width:auto
auto默认值包含四种表现形式:
- 充分利用可用空间:fill-available
- 收缩与包裹: fit-content
- 收缩到最小:min-content
- 超出容器限制
height:100%
如果父元素高度为auto,只要子元素在文档流中,百分比值会被忽略。
使height:100%生效:
- 设置显示的高度值
html,body {
height: 100%;
}
- 使用绝对定位
div {
position: absolute;
height: 100%;
}
外部尺寸与流体特性
- 正常流宽度:margin/border/padding/content内容区域自动分配水平空间
- 格式化宽度:仅出现在“绝对定位模型”中
内部尺寸与流体特性
- 包裹性:包裹+自适应
- 首选最小宽度:每个汉字宽度,每个英文字符单元
- 最大宽度:最大的连续内联盒子的宽度
内联元素
可以和文字在同一行显示
内联盒模型
- 内容区域
- 内联盒子
- 行框盒子
- 包含盒子
幽灵空白节点
在HTML5文档声明中,内联元素的所有解析和渲染表现就如同每个行框盒子的前面有一个“空白节点”。这个空白节点永远透明,不占宽度,无法获取,但确实存在,表现如文本节点一样。
替换元素
根据是否具有可替换内容,可以把元素分为替换元素和非替换元素。
典型的替换元素:<img>
、<object>
、<video>
、<iframe>
、<textarea>
、<input>
······
替换元素特性:
- 内容可替换
- 内容的外观不受页面上的css影响
- 有自己的尺寸
- 在很多css属性上有自己的一套规则
替换元素和非替换元素的区别:
- 替换元素和非替换元素之间只隔了一个src属性
- 替换元素和非替换元素之间只隔了一个CSS
content
属性
content内容生成技术
- content辅助元素生成
- content字符内容生成
- content图片生成
- content开启闭合符号生成
- content计数器
margin
margin合并的3种场景
- 相邻兄弟元素margin合并
- 父级和第一个/最后一个子元素
- 空块级元素的margin合并
margin合并的计算规则:
- 正正取大
- 正负相加
- 负负最负
margin:auto
的填充规则
- 如果一侧定值,一侧auto,则auto为剩余空间大小
可用于实现左对齐或右对齐 - 如果两侧均是auto,则平分剩余空间
注:触发margin:auto
计算有一个前提,width和height不能是auto
margin无效情形:
-
display
计算值inline
的非替换元素的垂直margin无效 - 表格中
<tr>
和<td>
元素设置display
计算值是table-cell
和table-row
的元素的margin都是无效的 - margin合并的时候
- 绝对定位元素非定位方向的margin值“无效”
- 定高容器的子元素的
margin-bottom
或者定宽容器的子元素的margin-right
的定位“失效” - 鞭长莫及导致的margin失效
- 内联特性导致的margin失效
vertical-align
vertical-align
属性值分为4类:
- 线类:
baseline
,top
,middle
,bottom
- 文本类:
text-top
,text-bottom
- 上下标类:
sub
,super
- 数值百分比类: 如
20px
,2em
,20%
vertical-align
作用的前提: 只能应用于内联元素以及display
值为table-cell
的元素
层叠上下文和层叠水平
层叠顺序:
- 正
z-index
-
z-index:0
或者z-index:auto
或者不依赖z-index
的层叠上下文 -
inline
水平盒子 -
float
浮动盒子 -
block
块状盒子 - 负
z-index
- 层叠上下文
background
/boder
层叠领域的黄金准则
- 谁大谁上
- 后来居上
z-index不犯二准则: 对于非浮层元素,避免设定z-index值,z-index值没有任何道理需要超过2。
流向的改变
direction
unicode-bidi
writing-mode