我想为单选按钮的选定标签添加样式:
HTML:
<div class="radio-toolbar">
<label><input type="radio" value="all" checked>All</label>
<label><input type="radio" value="false">Open</label>
<label><input type="radio" value="true">Archived</label>
</div>
字符串
CSS
.radio-toolbar input[type="radio"] {display:none;}
.radio-toolbar label {
background:Red;
border:1px solid green;
padding:2px 10px;
}
.radio-toolbar label + input[type="radio"]:checked {
background:pink !important;
}
型
知道我哪里做错了吗
9条答案
按热度按时间olqngx591#
个字符
首先,您可能希望在单选按钮上添加
name
属性。否则,它们不属于同一组,并且可以选中多个单选按钮。此外,由于我将标签放置为(单选按钮的)兄弟,因此必须使用
id
和for
属性将它们关联在一起。kdfy810k2#
如果你真的想把复选框放在标签里面,试着添加一个额外的span标签,例如。
HTML格式
字符串
CSS
型
这将为选定单选按钮的所有同级设置背景。
mzaanser3#
当元素不是兄弟时,你使用了相邻兄弟选择器(
+
)。标签是输入的父元素,而不是它的兄弟元素。CSS没有办法根据它的后代(也没有任何跟随它的东西)来选择元素。
您需要使用JavaScript来解决这个问题。
或者,重新排列标记:
字符串
doinxwow4#
你可以在html和css中添加span。
这是我的代码中的一个例子...
HTML(JSX):
字符串
CSS使标准单选按钮在屏幕上消失并显示自定义按钮图像:
型
klsxnrf15#
只需使用
label:focus-within {}
来设置标签的样式,并选中单选框或复选框。eqoofvh96#
这里有一个可行的解决方案
个字符
6ljaweal7#
由于目前还没有CSS解决方案来样式化父类,我在这里使用一个简单的jQuery来添加一个类到一个标签中,并在其中检查输入。
字符串
别忘了也给预检查输入的标签给予类
checkedlabel
fslejnso8#
正如TimStieffenhofer在他们的answer中提到的,最简单的方法是将输入字段作为标签的子字段,并在标签上使用
:focus-within
伪类。如果你想隐藏你的单选按钮,并将输入设置为隐藏或不显示,这将不再起作用。解决方法是给予输入字段一个-1的z索引(或任何低于父标签的z索引)。
yjghlzjz9#
仅适用于超级渐进式开发者(注意:**:has**仍然支持较低!)
个字符