自己画的勾选框在 Chrome 正常,Safari 上只剩默认方块或完全空白。乍看像缓存或者权限的锅,追下去往往不是。
input[type=checkbox] { appearance: none; -webkit-appearance: none; width: 18px; height: 18px; border: 1px solid #bbb; border-radius: 3px; }
input[type=checkbox]:checked { background: #2b6cff; }
追下去是这么回事:没有重置浏览器默认外观,伪元素在部分内核下不生效。
碰到「自定义复选框」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
具体做法是,先重置外观属性;再用伪元素绘制选中态;保留可聚焦的原始控件。
验收就看一点,各浏览器复选框样式一致,选中态可见。