不能直接给.layui-laypage-curr加box-shadow,因其仅为容器,真正渲染背景和边框的是子元素.layui-laypage-em;外阴影易被父容器overflow:hidden裁剪,须对.layui-laypage-em使用inset内阴影并加position:relative和border-radius。

layui分页页码加阴影为什么不能直接写 box-shadow 在 .layui-laypage-curr 上
因为当前页按钮实际渲染结构是嵌套的:.layui-laypage-curr 只是容器,真正显示背景和边框的是它的子元素 .layui-laypage-em。只给外层加 box-shadow,阴影会被父容器裁掉或根本不可见——尤其在启用 border-radius 时,overflow: hidden 会直接吞掉外阴影。
给当前页码加内阴影的最小可行 CSS
必须同时命中两个选择器,并用 inset 避免被裁剪:
-
.layui-laypage .layui-laypage-curr .layui-laypage-em是核心目标,所有样式都要落在它身上 - 用
box-shadow: inset 0 2px 4px -2px rgba(0,0,0,.15)——inset是关键,确保阴影向内生长,不依赖外部容器留白 - 必须加
position: relative,否则某些浏览器(如 Safari)下inset阴影不触发渲染 - 如果页码有圆角,
border-radius要和阴影一起设,否则边缘生硬
示例:
.layui-laypage .layui-laypage-curr .layui-laypage-em {
position: relative;
box-shadow: inset 0 2px 4px -2px rgba(0,0,0,.15);
border-radius: 4px;
}
想给所有页码(包括非当前页)加统一外阴影怎么办
可以,但要注意层级和裁剪问题:
- 目标选择器是
.layui-laypage a和.layui-laypage span(页码数字、上一页/下一页等都是a或span) - 必须给整个分页容器加
overflow: visible,否则box-shadow会被.layui-laypage的默认overflow: hidden截断 - 阴影值不宜过大(如模糊值 > 8px),否则在小屏或密集页码下视觉混乱
- 移动端需额外处理热区:加
padding扩展可点击区域,否则阴影部分点不中
示例:
.layui-laypage {
overflow: visible;
}
.layui-laypage a,
.layui-laypage span {
box-shadow: 0 1px 3px rgba(0,0,0,.1);
padding: 4px 10px;
}
阴影在响应式或固定定位下失效的常见原因
不是 CSS 写错了,而是布局上下文变了:
- 如果分页容器放在
position: fixed或transform元素里,阴影可能被层叠上下文截断——检查父级是否有z-index或will-change - 移动端开启横向滚动(
overflow-x: auto)后,阴影常被滚动容器裁掉,此时要给滚动父容器加padding留白 - 使用
theme参数自定义主题时,Layui 会插入内联样式,权重高于普通 CSS——必须加!important覆盖 - IE10+ 支持
box-shadow,但老版本不支持rgba;若需兼容 IE9,得用十六进制色 +filter(不推荐)
最稳妥的做法:把阴影 CSS 放在页面底部、layui.all.js 加载之后,且用高权重选择器(如 .layui-laypage .layui-laypage-em)。


















