【问题标题】:High contrast CSS or JavaScript detection for FirefoxFirefox 的高对比度 CSS 或 JavaScript 检测
【发布时间】:2019-09-25 18:47:43
【问题描述】:
我正在尝试设计网站的高对比度版本。以下代码适用于 IE 和 Edge,但我需要检测 Firefox。
@media screen and (-ms-high-contrast: active) {}
我还可以将 JavaScript 检测用于高对比度和 Firefox。有什么建议吗?
【问题讨论】:
标签:
css
firefox
accessibility
contrast
high-contrast
【解决方案1】:
我正在尝试设置网站的高对比度版本... ..需要 Firefox 检测
您正在使用的高对比度媒体查询,
@media screen and (-ms-high-contrast: active) {}
仅适用于 IE 和 Edge Legacy 浏览器。 (-ms 前缀代表 Microsoft。)
解决方案:
- 为 Windows 10 高对比度模式创建 JavaScript 测试。此函数添加一个不寻常颜色的 div,并测试它是否在附加到 DOM 后颜色发生变化。如果颜色发生变化,则说明您处于高对比度模式! (这也适用于 IE 和 Edge Legacy。)
highContrastMode = () => {
const testDiv = document.createElement('div');
testDiv.style.color = 'rgb(200, 100, 50)';
document.body.appendChild(testDiv);
const color = document.defaultView!.getComputedStyle(testDiv, null).color;
document.body.removeChild(testDiv);
return color !== 'rgb(200, 100, 50)' ? true : false;
}
- 为 Firefox 创建用户代理测试:
const isFirefox = window.navigator.userAgent.indexOf('Firefox') > -1;
- 然后应用您的 CSS!