元素宽高不生效主因是默认为inline类型(如span、a),其width/height无效;可通过display: block、inline-block或flex启用,并排查父容器高度、内容为空、CSS覆盖及z-index等问题。
元素设置了宽高却不显示,大概率是因为它默认是 inline 元素(比如 span、a、em 等),而 inline 元素的 width 和 height 是无效的。
浏览器对不同标签有默认的 display 值:
– div、p、section 默认是 block,支持宽高;
– span、a、strong 默认是 inline,忽略宽高;
– img、input 默认是 inline-block,支持宽高但有行内布局特性。
适合需要独占一行、且只需基础盒模型控制的场景:
span 加 display: block; 后,它就能正常响应 width 和 height;float 或 inline-block 调整;display: inline-block;。适合需要精确控制子元素排列、对齐或自适应尺寸的情况:
display: flex; 会让容器成为弹性容器,其直接子元素自动成为 flex 项,宽高完全生效;span),只要设了 display: flex,它就转为块级弹性容器;flex-direction 控制方向,justify-content / align-items 控制对齐,flex-wrap 控制换行。即使改了 display,仍不显示?再快速排查这几项:
display: none、visibility: hidden、opacity: 0;基本上就这些。display 切换是解决宽高失效最直接的一步,但得结合上下文一起看——不复杂,但容易忽略。