我正在使用这篇文章来解释如何为给定元素添加标签选择器。但是,我想用它来选择给定类型(特别是收音机类型)的所有标签。试:
label[for=input[type="radio"]] {
/* Styles */
}
和
label[for=[type="radio"]] {
/* Styles */
}
不起作用,我不确定我做错了什么或如何做对。有人可以向我解释解决方案吗?非常感谢!
我正在使用这篇文章来解释如何为给定元素添加标签选择器。但是,我想用它来选择给定类型(特别是收音机类型)的所有标签。试:
label[for=input[type="radio"]] {
/* Styles */
}
和
label[for=[type="radio"]] {
/* Styles */
}
不起作用,我不确定我做错了什么或如何做对。有人可以向我解释解决方案吗?非常感谢!
不幸的是,使用当前的 CSS3 选择器无法完成您想要的操作。
有计划将此功能包含在 CSS 4 级选择器中,但此规范尚未最终确定,并且肯定不会在任何当前浏览器中实现。
这个想法是一个看起来像这样的选择器:
label /for/ [type="radio"] {
/* styles */
}
但那是为了未来,而不是现在。对不起。
你可以在这里阅读: http: //css4-selectors.com/selector/css4/reference-combination/
同时,如果你需要这种东西,你需要确保你的 HTML 结构使得元素可以使用当前的 CSS 选择器相互引用。
例如,如果它们彼此相邻,则可以使用:
label + input[type="radio"] { .... }
这和你暂时能得到的一样接近。
您应该为这些标签使用特殊类。您不能根据 CSS 中的子元素属性来设置父元素的样式 [目前]。
<label class='radio'><input type='radio'></label>
你的样式表会说
label.radio{
/* add styles here */
}
首先 - 更正
该for
属性仅与id
与之关联的表单元素相关联,因此您正在滥用该属性来执行您想要做的事情。的设计for
是将其与表单中的一个特定元素联系起来。所以是这样的:
<label for="RadioChk">My Radio Button</label><input id="RadioChk" type="radio" />
因此,这for
不是仅检查 a 的解决方案type
。
第二 - 唯一的 CSS 唯一解决方案
使用纯 CSS 完成的唯一干净方法是,如果您的元素是这样排序的(遵循label
)input
:
<input type="radio" /><label>My Radio Button</label>
然后允许这个 css 选择:
input[type=radio] + label {
/* styles */
}
如果这不能做到,那么我会选择 AbsoluteƵERØ 的使用类的解决方案。
您尝试做的事情是不可能的(无论如何仅使用 CSS)。该[attribute=value]
语法通过检查该特定元素的属性值来工作。因此,for=[type="radio"]]
正在寻找类似的东西<label for='[type="radio"]'>
(如果语法甚至有效)。
试试这个:
input[type=radio]
{
CSS goes here
}