设置表格边框粗细时,必须同时定义border-style,否则border-width无效。在border-collapse:collapse模式下,外边框可直接加粗table元素,单元格边框可用方向性写法(如border-top)或box-shadow模拟,避免合并后边框丢失。移动端渲染偏差可通过clamp()或box-shadow解决。
border-width 却发现边框纹丝不动?先说一个很多人踩过的坑:这多半不是因为宽度设得不够,而是你忘了告诉浏览器,你究竟想要什么风格的边框。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
直接设 border-width 很可能没效果——核心原因就两个:要么缺了 border-style,要么被 border-collapse: collapse 给“吃”掉了。
border-width 不显示粗边框?问题出在浏览器的默认行为上。对于 table、td、th 这些元素,浏览器给的默认 border-style 是 none。你想想,连样式都设成“无”了,宽度设得再大,在视觉上也是 0。别怀疑,这不是bug,是规范就这么定的。
border-width: 3px 却啥也看不到,第一件事不是调尺寸,而是去开发者工具的 Computed 面板里,看看 border-top-style 是什么值。border-style 设成 hidden,这比 none 还彻底,宽度对它完全无效。border-style: solid !important,如果边框立刻现身,那基本可以确定是 style 被其他规则覆盖了。border-collapse: collapse 下怎么稳稳加粗外边框?绝大多数表格都会开启 border-collapse: collapse,这个属性的意图是让相邻单元格的边框合并,避免出现双线。但代价就是,你精心设置在某个 td 上的 border-width,可能在合并过程中被“优先级更高”的那条边给压下去。比如左右两个 td 相邻,它们中间的边框合并后,只会显示其中一条。这就像一场控制权的争夺战。
table 元素本身加 border,比如 table { border: 3px solid #000; }。这样整张表格的外框就稳了。td, th { border: 1px solid #000; }。一粗一细,内外分明,视觉上就不容易糊成一团。td { border-left-width: 3px; }。不过别忘了,前提是 border-left-style: solid 已经存在,否则宽度依然无效。那就别依赖 table 的 border,直接对每个单元格下手,但要学会绕开 collapse 的干扰逻辑。
td, th { border: solid #000; border-width: 2px 1px 1px 2px; }。这个写法的精妙之处在于,外侧边(左、上)给粗一点,内侧边(右、下)给细一点,既突出了表格的外轮廓,内部分隔线又清晰不臃肿。tr:last-child td { border-bottom-width: 2px; }。th:first-child { border-left-width: 3px; }。border-style 是老大,它得先定义了,border-width 才会被正经对待。要么用简写 border: solid 一次性声明,要么就把 border-style 写在前面。这是前端在移动时代遇到的经典难题。你写死的 1px,在 Retina 屏上可能会被渲染成 2 个物理像素,看着就粗了。你想写 0.5px 来校准,结果旧版 Safari 又不认。
box-shadow: 0 0 0 0.5px #000 来模拟边框。这玩意的兼容性很好,而且不受 border-collapse 的困扰。clamp() 函数:border-width: clamp(1px, 0.08vw, 2px),当然,前提你得确认目标浏览器支持它。transform: scaleY(0.5) 来模拟细边框,这个要慎用。它基本只适用于单边,而且搞不好会影响文字对齐,甚至触发额外的重排。说到底,最容易被忽略的动作就是:改完 border-width 后,忘了回头看一眼 border-style 还是不是活的。在 collapse 模式下,边框不是简单的“加粗”,而是一场控制权的争夺战。真想调粗细,得先抢回定义权。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述