为何body设置display:inline后子元素li未继承该样式?
为什么给body设置
display: inline无法让子元素变成行内元素? 核心原理:display属性的继承逻辑
CSS的display属性并非所有值都会自动被子元素继承。只有当显式设置display: inherit时,子元素才会继承父元素的display值;而inline、block这类具体的显示类型值,不会默认传递给子元素。每个HTML元素都有浏览器预设的默认display值,比如ul默认是block,li默认是list-item,这些默认值不会因为父元素的display改变而自动覆盖。
代码示例1分析
给body设置display: inline后,只有body元素本身会变成行内元素,但它的子元素ul依然保持默认的block显示类型,li也还是默认的list-item。所以页面中的列表依然以块级方式布局,和body的display设置无关。
代码示例2分析
给li设置display: inherit时,li会继承它直接父元素ul的display值。由于ul的默认display是block,所以li继承到的是block,而非body的inline。同时,li默认的list-item类型会被覆盖,原本的列表标记(圆点)也会随之消失,这就是你看到的结果。
正确实现li行内显示的方法
如果想让li以行内方式显示,直接给li设置display: inline或display: inline-block即可:
li { display: inline; }
内容的提问来源于stack exchange,提问作者Michael36
相关产品推荐
相关产品推荐

