Silverstripe自动添加font-size:10px样式问题求助
针对Silverstripe网站Safari用户列表自动添加小字体样式的排查方案
这种仅特定浏览器用户出现的编辑器问题确实挺棘手,结合你提到的无法复现的情况,大概率是Safari端的环境或编辑器兼容性问题,给你几个具体的排查和解决思路:
排查用户的Safari环境干扰
先帮用户排除本地浏览器的问题:- 让他切换到Safari的隐私浏览模式再创建列表,如果问题消失,说明是浏览器扩展(比如样式修改类插件、广告拦截器)或者本地设置导致的,建议他禁用近期安装的扩展,或者重置Safari的默认设置。
- 检查他的Safari字体设置:偏好设置→高级,看看有没有勾选“允许网页设置字体大小”之外的选项,比如强制使用特定字体大小,这可能会被编辑器误读并注入样式。
修复Silverstripe编辑器的Safari兼容性
Silverstripe默认用TinyMCE作为富文本编辑器,针对Safari的contenteditable行为差异,可以调整编辑器配置:- 在项目的
app/_config/editor.yml里添加全局样式强制继承,覆盖自动注入的小字体:
然后在SilverStripe\CMS\Controllers\CMSMain: editor_css: - 'app/css/custom-editor-styles.css'custom-editor-styles.css里写:ul li, ol li { font-size: inherit !important; } span[style*="font-size: 10px"] { font-size: inherit !important; } - 更新TinyMCE到最新兼容版本,或者在编辑器配置里禁用自动字体转换:
在EditorConfig的PHP配置里添加:$config = EditorConfig::get('cms'); $config->setOption('convert_fonts_to_spans', false); $config->setOption('paste_remove_styles', true);
- 在项目的
排查用户的隐性输入残留
有时候用户看起来是手动输入列表,但实际上可能不小心从其他应用(比如Mac的Notes、Mail)复制了带隐藏格式的内容,Safari会保留这些格式残留。建议用户完全清空输入框,手动敲回车创建列表,不要用任何复制粘贴操作,看看问题是否消失。临时应急方案
如果暂时找不到根源,可以在Silverstripe的前端模板里全局覆盖这个样式,避免影响页面展示:
在网站的全局CSS里添加:.content ul li, .content ol li { font-size: 16px !important; /* 换成你网站的默认字体大小 */ } .content span[style*="font-size: 10px"] { font-size: inherit !important; }
内容的提问来源于stack exchange,提问作者Trekin
相关产品推荐
相关产品推荐

