box-shadow 和 border 同时存在不会导致尺寸误差,真正原因是盒模型计算不当或视觉错觉;必须设 box-sizing: border-box,避免 content-box 下 border 撑宽、flex/grid 计算失准及 hover 重排。
box-shadow 和 border 同时存在时,不会导致尺寸误差;真正出问题的是你没控制好盒模型计算方式,或者误把视觉错觉当成了布局偏移。
这不是阴影或边框本身撑开了尺寸——box-shadow 永远不参与布局,border 是否撑开取决于 box-sizing。常见错觉来源:
box-sizing: content-box,此时 width: 300px; border: 2px solid #000; 实际占宽 304pxbox-shadow 虽不占空间,但模糊扩散(如 blur-radius: 12px)会让视觉重心外移,人眼觉得“溢出了”overflow: hidden,而你又没预留足够 padding,阴影被裁,看起来像卡片“顶到边”只要卡片有 border 或需要稳定宽度,就必须显式设 box-sizing: border-box。否则:
flex-basis 或 grid-column 行为异常推荐全局初始化:* { box-sizing: border-box; },再对特殊元素(如 img、canvas)单独重置。
两者共存时,最容易暴露问题的是参数冲突:
border-radius 必须 ≥ border-width,否则圆角处边框会“露直角”,阴影也难贴合box-shadow 模拟边框(如 0 0 0 2px #ccc)时,别再叠加真实 border,否则视觉上变粗且边缘发虚0 1px 2px -1px rgba(0,0,0,0.1), 0 1px 3px 0 rgba(0,0,0,0.05))比单层更稳,负 spread-radius 能收紧边缘,避免盖住文字outline 做辅助边框,注意它不走盒模型——outline-offset 才是控制距离的关键,且 overflow: hidden 会直接裁掉它卡片自身写得再规范,也扛不住父级乱设 overflow 或在 Flex/Grid 里滥用 margin:
overflow: hidden + 卡片带底部阴影 → 阴影被切,加 padding-bottom 是治标,改 overflow: visible 或用 gap 分隔才是根治margin-right 控制间距,结果首尾多出空白、右侧阴影被父容器裁掉 → 改用 gap,卡片自身保持 margin: 0
grid-gap 已废弃,必须用 gap;若还混用 margin,会导致轨道尺寸计算混乱,阴影位置飘忽复杂点在于:这些属性的交互不报错,也不警告,只在特定缩放、特定浏览器(尤其是 Safari)下才暴露。上线前务必在真机上拖动滚动、悬停、缩放验证。
tlwdr7650路由器没有wps按钮(tlwdr7650路由器没有wps按钮怎么办)
tlwdr7632扩展器电脑怎么设置(tlwdr7632扩展器电脑设置方法)
tlwda6332re安装教程(tlwda6332re如何安装)
tlwdr7632扩展器手机怎么设置(tlwdr7632扩展器手机设置方法)
tlxdr3010怎么设置网速快(tlxdr3010网速快设置方法)
tlwdr5620易展版怎么克隆(tlwdr5620易展版克隆方法)