line-height必须设在li上才生效,因li是承载文本并形成行框的容器;设在ol或父div无效。推荐ol li { line-height: 1.8; margin-bottom: 0.4em; },使用无单位数值确保响应式适配。

ol的line-height设在哪才生效
必须写在ol或li上,不能只设在父容器(比如div)里——line-height只对形成“行框”的文本流起作用,而ol默认是块级元素,li才是实际承载文本的容器。
推荐直接设在li上,这样每项高度独立可控,且避免嵌套时继承混乱:
ol li {
line-height: 1.8;
margin-bottom: 0.4em;
}
用无单位数字(如1.8)比px更安全:字体缩放、响应式切换时能自动适配。
为什么设了line-height还是挤?常见干扰项
不是line-height没起作用,而是被其他样式压过了。高频干扰包括:
-
margin或padding为0,尤其ol默认有上下外边距,但某些重置样式(如* { margin: 0; })会抹掉它 -
vertical-align误用在li上(它对块级元素无效) -
display: flex或display: grid套在ol外层,导致line-height失去作用对象 -
font-size: 0出现在祖先元素中(常用于清除间隙),会让line-height: 1.8算出来是0
嵌套ol行高错乱怎么修
嵌套时如果子ol和父ol行高打架,根本原因是计数器和布局没隔离。别碰position: fixed或全局counter-reset——它们会让所有li脱离文档流、堆叠到一起。
正确做法是分层控制:
- 给顶层
ol设counter-reset: item - 每个嵌套
ol都单独加counter-reset: subitem -
li用counter-increment: item,子li用counter-increment: subitem - 行高统一由
li的line-height和margin-bottom配合控制,不依赖ol自身高度
移动端列表点不中?热区不足的真实原因
iOS Safari 要求可点击区域最小为 44×44px,而默认li内容撑不开这个尺寸。单纯调大line-height不够,必须补足物理点击空间:
- 给
li加min-height: 44px,再配合display: flex; align-items: center;垂直居中文本 - 避免用
transform: scale()缩放整个ol——它同时压缩点击热区,iOS 直接拒收 touch 事件 - 如果用了自定义序号(伪元素
::before),确保它的content区域也参与热区计算,别让它浮在文字上方却不可点
真正难调的从来不是行高数值,而是让每一项在视觉、语义、可访问性、触控反馈上都保持一致——这四者缺一不可。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











