我可以禁用用户字体大小配置吗?
Can I disable the user font size configuration?
我正在制作一个自适应网站,当用户使用一些奇怪的字体大小配置时(为了视觉问题等),设计以一种可怕的方式中断…显然我不想忘记无障碍…所以:有没有办法知道当用户试图强制字体大小时,禁用它并给他不同的样式?
通常你在页面上的字体大小设置会覆盖浏览器设置,除非你在设置font-size
时使用%
或em
,在这种情况下,它们可能相对于浏览器设置中的大小设置(取决于你如何设置大小)。
这意味着,如果你有,说body { font-size: 9px }
在你的CSS和视力受损的用户选择了最大的大小在正常的Chrome设置(对应于24px),用户设置被覆盖,并使用难以辨认的大小。这就是为什么浏览器的字体大小设置不经常被用户改变的一个原因:当单独使用时,它们的效果相当有限。
然而,如果用户设置浏览器忽略网页上指定的字体大小(这是可能的,例如在IE中通过可访问性设置),那么无论你做什么,浏览器设置中的字体大小都会被使用。(页面内的字体大小可能仍然会有所不同,例如由于使用small
标记或标题元素,因为浏览器默认为某些元素,但页面上的字体大小的任何CSS设置将有效地禁用。)
类似的考虑也适用于最小字体大小设置,这是相当常见的,甚至可能由浏览器的出厂设置设置。它们在正常的CSS级联产生一定的大小后生效——如果该大小小于最小集,则使用最小集。
有一些间接的方法可以尝试找出浏览器实际使用的字体大小,例如通过使用clientHeight
属性获取元素的高度。如果对具有line-height: 1
的元素这样做,通常会得到实际使用的字体大小。但你不能禁用它;这几乎就是浏览器设置覆盖网页设置的本质,网页无法覆盖它们。
您可以通过读取根html
元素的属性来获得getComputedStyle
的默认字体大小(除非您有修改其font-size
的css规则)。
// get default font size in px
var computedStyle = window.getComputedStyle(document.getElementsByTagName("html")[0], null);
var defaultFontSize = parseFloat(computedStyle.getPropertyValue('font-size'));
对于大多数浏览器,默认值应为16px
要覆盖用户样式表中的值,请将!important
添加到指定字体大小的规则中,例如:
body {
font-size: 16px !important;
}
但是请注意,一般情况下应该避免这种情况。参见这个SO问题:在css中什么时候使用重要属性? - 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 用Javascript更改我网站上的字体大小
- RequireJS向模块传递配置总是返回undefined
- 不同字体的字母间距不同
- 如何在谷歌字体加载时显示加载图像
- 如何配置分析以将数据发送到我自己的服务器
- 扩展jQuery插件以更改配置
- PhoneGap选项卡栏自定义字体,背景图案
- 每个选择器的Jquery css颜色都在变化,但字体大小却没有变化
- webRTC错误未定义配置
- 如何配置WebStorm以正确格式化生成器函数
- Javascript配置服务器URL并将其存储
- Node Red在Admin UI中获取配置节点值
- 如何保护节点webkit应用程序上的字体
- AngularJS智能表全局配置实现
- react路由器使用简单的javascript路由器配置来处理不匹配的路径
- web配置http到https重定向异常
- 如何配置browserfy与Karma使用转换Stringify为Mustache模板
- 如何在webpack中配置字体文件输出目录
- 我可以禁用用户字体大小配置吗?