一、可继承属性(子元素默认继承父元素的值)
核心特征:与文本内容样式或排版连续性相关的属性
1. 文字类
font-family字体类型font-size字号font-weight字重 (bold/normal)font-style斜体 (italic)color文字颜色text-align对齐方式line-height行高text-indent首行缩进letter-spacing字符间距word-spacing单词间距
2. 列表类
list-style-type列表符号类型 (disc/circle)list-style-position符号位置 (inside/outside)
3. 表格类
border-collapse表格边框合并border-spacing表格单元格间距
4. 其他
cursor鼠标样式visibility可见性 (hidden 依然占位)quotes引用符号样式
记忆场景:想象你写一篇文章,所有段落里的文字样式(字体/颜色/对齐)会自动继承自父容器,无需重复设置。
二、不可继承属性(子元素需单独设置)
核心特征:与布局/盒子模型或元素自身外观相关的属性
1. 盒子模型
width/height宽高margin/padding外边距/内边距border边框样式background背景相关box-shadow盒子阴影
2. 定位布局
position定位方式display显示模式top/left定位偏移float/clear浮动z-index层叠顺序
3. 元素特性
overflow溢出处理opacity透明度transform变形效果flex/grid弹性/网格布局属性
记忆场景:想象给一个 div 设置宽度和边距,内部的子元素不会自动继承这些布局属性,否则会导致页面布局混乱。
三、强制继承技巧
通过 inherit 关键字强制继承(即使属性本身不可继承):
.child {
background: inherit; /* 强制继承父元素背景 */
border: inherit; /* 强制继承父元素边框 */
}
四、快速记忆口诀
- 可继承:文字排版类 (Font/Text/List) + 连续性视觉类 (Cursor/Visibility)
- 不可继承:盒子模型 (Width/Height/Margin) + 布局定位 (Position/Display/Float) + 自身特性 (Background/Border)
- 例外注意:
visibility: hidden可继承但隐藏内容cursor可继承,子元素默认使用父级鼠标样式
五、面试高频问题
问:如何让不可继承的属性实现继承?
答:用 inherit 关键字,例如 width: inherit;
问:opacity 和 visibility: hidden 的区别?
答:opacity 不可继承但影响整个子树的透明度,visibility 可继承但只是隐藏内容(保留占位)