【发布时间】:2021-03-25 06:21:11
【问题描述】:
我想通过考虑具有高对比度模式(或者可能只是暗模式)的用户来使网站更易于访问。 现在我遇到了自定义单选按钮的问题,这些按钮只是具有圆形边框的 HTML 元素:当用户将浏览器的默认背景颜色设置为黑色时,我的元素的背景颜色也是黑色,看起来像一个选中的选项,即使我将此元素的背景颜色设置为白色。
为了防止这种情况,我把白色边框加粗了,所以它看起来像一个白色背景。但这也产生了问题,有时在某些缩放级别或分辨率下,我的按钮中间会有一个小黑点。
有什么方法可以防止浏览器覆盖我在 CSS 中声明的背景色? 有没有什么我错过的东西,比如阻止这种行为的属性?
我也可以替换这些元素或以不同的方式实现它们,但此时我只是好奇是否有任何简单的解决方案。
我的单选按钮的样式如下所示:
input.check + label:before {
display: inline-block;
content: "";
width: 1rem;
height: 1rem;
background: #fefefe;
border: 0.2rem solid #fefefe;
border-radius: 50%;
position: absolute;
left: -1rem;
}
input.check:checked + label:before {
background: #000000;
}
Here is a link to a picture of my radio when checked / or default black background-color
我通过将背景颜色设置为黑色来制作单选按钮的“选中”外观 - 就像浏览器在这种情况下所做的那样。
编辑
到目前为止,对于改进自定义单选按钮的可访问性,已经有了很好的解决方案。 对我的问题更具体一点:
但是无论您为每个元素指定什么,这似乎都会覆盖每个背景颜色。有没有办法让这种覆盖异常?
【问题讨论】:
-
您能否添加一些代码或图片来显示您的问题,以便我们提供帮助?仅根据您的描述很难理解。
-
@anpel 我添加了 css 和元素的图像。
-
您正在为哪些浏览器和操作系统开发?
-
尝试使用javascript检测浏览器的类型,并在body元素中添加一个类。这样你就可以知道浏览器的类型,并且可以通过 css 定位它。
-
请注意,有一些方法可以通过媒体查询检测 CSS 中的高对比度模式和暗模式,例如
prefers-contrast和prefers-color-scheme。
标签: html css high-contrast