直接修改 .laydate-main 的 font-size 不生效,是因为 Layui laydate 弹层字体由 .laydate-yms、.laydate-content td/th、input[readonly] 三类节点分别控制,需统一设置并加 !important;同时须同步调整 td/th 的 height、line-height 和 width 防止错位。
直接改 .laydate-main 里的 font-size 不生效?原因在这
因为 layui 的 laydate 弹层是动态插入 dom 的,样式作用域不继承全局,.laydate-main 下的文字(比如年份、月份、日期数字、时间输入框)实际由多个嵌套元素控制,不是统一一个 font-size 能覆盖的。单纯写 .laydate-main { font-size: 14px; } 只会影响部分容器盒模型,文字很可能没变。
必须覆盖的三个关键选择器
laydate 内部字体大小分散在三类节点上,漏掉任一都会出现“有的字小了、有的还很大”的现象:
-
.laydate-main .laydate-yms:顶部年月选择栏(如“2026年 4月”) -
.laydate-main .laydate-content td, .laydate-main .laydate-content th:日历格子内的数字和星期头 -
.laydate-main input[readonly]:底部时间输入框(type=datetime 时出现)
推荐写法(加到你页面的 <style></style> 或自定义 CSS 文件末尾):
.laydate-main .laydate-yms,
.laydate-main .laydate-content td,
.laydate-main .laydate-content th,
.laydate-main input[readonly] {
font-size: 14px !important;
}
加 !important 是因为 Layui 内部用内联 style 或高权重选择器写了默认值(如 font-size:16px),不强制很难顶掉。
改完发现日期格子挤变形?同步调尺寸
字体变小后,td/th 的宽高如果不调,会出现文字被裁切、错位或行高塌陷。必须配套重设单元格尺寸:
- 保持比例:原默认高度约 30px,字体缩到 14px 后建议设
height: 26px - 宽度按需:单个日期格子宽度建议不低于
36px(14px 字体+左右 padding) - 行高对齐:加
line-height: 26px让数字垂直居中
完整片段示例:
.laydate-main .laydate-content td,
.laydate-main .laydate-content th {
width: 36px;
height: 26px;
line-height: 26px;
font-size: 14px !important;
}
只改某一个 laydate 实例?用实例 ID 做前缀隔离
如果你只希望 #range 这个范围选择器变小,其他保持默认,就别用全局选择器。给容器加唯一 ID,再用它做 CSS 前缀:
<div class="layui-inline" id="small-date-picker"></div>
然后样式限定为:
#small-date-picker .laydate-main .laydate-yms,
#small-date-picker .laydate-main .laydate-content td,
#small-date-picker .laydate-main .laydate-content th,
#small-date-picker .laydate-main input[readonly] {
font-size: 13px !important;
}
这种写法不会影响页面里其他 laydate.render({ elem: '#other' }) 实例,适合后台多表格混用场景。
最易忽略的是:改完字体后没调 td/th 的 height 和 line-height,导致日历格子文字贴顶或截断——这不是样式没生效,而是盒模型没对齐。











