width 和 height 不失效,而是受 box-sizing(默认 content-box)、display 类型(如 inline 元素不支持)、flex/grid 布局(如 flex-shrink)及父容器高度塌陷等因素影响。
默认 box-sizing 是 content-box,这意味着你写的 width: 200px 只算内容区宽度,加上 padding 和 border 后,元素实际占位会更大。浏览器没“不生效”,只是你没算进去。
padding 或 border,哪怕只有 1px
box-sizing: border-box;,让 width 和 height 包含 padding 和 border*, *::before, *::after { box-sizing: border-box; }行内元素(如 span、a、strong

width 和 height,这是规范行为,不是 bug。
display 值:用开发者工具看 computed 样式里的 display
display: inline-block; 或 display: block;
display: inline; —— 即使强行设了 width,也不会生效在 flex 或 grid 容器里,子项的 width 和 height 可能被 flex-grow、min-width、align-items 等覆盖,尤其当没显式设 flex-shrink: 0 时。
flex-shrink: 1),即使写了 width: 300px 也可能被压缩flex: none; 或 flex-shrink: 0; width: 300px;
grid-template-columns 是否用 fr 或 auto 覆盖了显式 width纯文本内容的块级元素(如空 div 或只含换行符的 p),设 height 会生效,但若内部没有内容撑开、又没设 min-height 或 overflow,可能视觉上“看不见变化”。更常见的是子元素浮动或绝对定位导致父容器高度塌陷。
overflow: hidden; 或 ::after { content: ""; display: table; clear: both; }
height 是独立设定,但父容器可能仍表现为“无高度”width 和 height 从不“失效”,只是它们的行为严格绑定在盒模型、显示类型和布局上下文里。最容易忽略的是 box-sizing 默认值和 flex 子项的收缩特性 —— 这两个点不排查,光调数值没用。