正确方式是设置 skin: "nob",因其为 layui 原生支持的无边框语义化风格,能彻底清除所有内联 border 样式及冗余渲染逻辑,而 skin: "none" 或 "borderless" 无效。

layui表格设置无边框风格的正确方式
直接在 table.render() 配置中设 skin: "nob" 就能实现真正无边框,不是靠 CSS 覆盖“隐藏”,而是框架原生支持的语义化风格。别用 skin: "none" 或 "borderless"——这些值无效,只会回退到默认 line 风格。
为什么 skin: "nob" 是唯一可靠方案
layui 的 skin 参数是白名单控制,只认三个值:"line"、"row"、"nob"。其中 "nob"(no border 缩写)会主动移除所有单元格的 border 内联样式,并跳过表头分隔线、固定列边框等冗余渲染逻辑。
-
skin: "line":仅保留水平线(border-bottom),但仍有竖线残留 -
skin: "row":仅保留竖线(border-right),和你要的效果相反 -
skin: "nob":彻底清空所有 border 相关 DOM 属性,包括.layui-table自身的border和.layui-table-col-set
常见误操作及后果
很多人试图用 CSS 强制覆盖,结果出现“闪现竖线”或滚动错位,根本原因是没处理固定列和拖拽分隔线:
- 只写
.layui-table td { border-right: none !important; }→ 固定列(.layui-table-fixed-l)里仍显示竖线 - 漏掉
.layui-table-col-set { display: none; }→ 表头最右侧总有一道细线,尤其在自定义主题下顽固存在 - 用了
skin: "line"又加 CSS → 样式冲突,!important权重被内联样式压制,无效 - 在
done回调里动态删 border → 表格重绘时 layui 会重新注入内联样式,边框“复活”
初始化时就该写对,别等渲染完补救
无边框必须从 table.render() 第一帧就生效,否则后续任何 DOM 操作都治标不治本。确认你的配置包含:
table.render({
elem: '#demo',
skin: 'nob', // 必须是字符串 'nob',不是布尔值或 null
even: false, // 若不需要隔行色,顺手关掉,避免干扰视觉
cols: [[{field: 'id', title: 'ID'}]],
data: []
});
注意:skin: "nob" 对静态表格(<table class="layui-table" lay-skin="nob">)同样有效;若搭配 <code>fixed: "left",无需额外处理固定列——"nob" 已内置兼容。











