我有一个自定义的单选框输入样式,实现方式大致如下:
<input type="radio" id="testradio" class="visuallyhidden custom-radio">
<label for="testradio">...</label>
.custom-radio + label:before {
content: ""
// Styling goes here
}
.custom-radio:focus + label:before {
outline: 1px solid black;
]
这个方法很棒,除了一个烦人的细节:键盘导航的焦点样式。我可以通过Tab键选择一组单选按钮,并使用箭头键更改所选项,但默认的:focus轮廓不会出现,因为输入标签是隐藏的。
我尝试添加自己的焦点样式,但这最终表现与默认的浏览器样式不同。默认情况下,Chrome(和其他浏览器)仅在您使用键盘选择单选框时绘制轮廓,而不是在单击它们时。然而,CSS :focus样式似乎也适用于单击单选框(或在此情况下单击标签),这看起来非常糟糕。
基本上我的问题是:如何应用:f ocus样式到单选框,以完全模拟默认的浏览器行为,即不会从鼠标点击焦点中出现?还是有其他方法可以自定义此单选框,以帮助我保留默认行为?
编辑:这里是一个JSFiddle演示我在谈论什么。在第一行上,您可以单击单选按钮,然后使用箭头键导航-只有在使用键盘时轮廓才会出现。在第二行上,单击单选按钮会立即触发焦点样式。
input:focus
在哪里? - LcSalazardisplay:none
吗?或者你是否尝试过使用position:fixed; top: -99px
来代替呢? - Ilya Streltsyn]
,是吗? - Sebastian Simon