css中可继承与不可继承的属性有哪些?

41 阅读2分钟

一、可继承属性(子元素默认继承父元素的值)

核心特征:与文本内容样式排版连续性相关的属性

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;     /* 强制继承父元素边框 */
}

四、快速记忆口诀

  1. 可继承:文字排版类 (Font/Text/List) + 连续性视觉类 (Cursor/Visibility)
  2. 不可继承:盒子模型 (Width/Height/Margin) + 布局定位 (Position/Display/Float) + 自身特性 (Background/Border)
  3. 例外注意
    • visibility: hidden 可继承但隐藏内容
    • cursor 可继承,子元素默认使用父级鼠标样式

五、面试高频问题

问:如何让不可继承的属性实现继承?
答:用 inherit 关键字,例如 width: inherit;

问:opacityvisibility: hidden 的区别?
答:opacity 不可继承但影响整个子树的透明度,visibility 可继承但只是隐藏内容(保留占位)