4

我正在使用这篇文章来解释如何为给定元素添加标签选择器。但是,我想用它来选择给定类型(特别是收音机类型)的所有标签。试:

label[for=input[type="radio"]] {
    /* Styles */
}

label[for=[type="radio"]] {
    /* Styles */
}

不起作用,我不确定我做错了什么或如何做对。有人可以向我解释解决方案吗?非常感谢!

4

5 回答 5

4

不幸的是,使用当前的 CSS3 选择器无法完成您想要的操作。

有计划将此功能包含在 CSS 4 级选择器中,但此规范尚未最终确定,并且肯定不会在任何当前浏览器中实现。

这个想法是一个看起来像这样的选择器:

label /for/ [type="radio"] {
    /* styles */
}

但那是为了未来,而不是现在。对不起。

你可以在这里阅读: http: //css4-selectors.com/selector/css4/reference-combination/

同时,如果你需要这种东西,你需要确保你的 HTML 结构使得元素可以使用当前的 CSS 选择器相互引用。

例如,如果它们彼此相邻,则可以使用:

label + input[type="radio"] { .... }

这和你暂时能得到的一样接近。

于 2013-05-13T16:18:23.223 回答
4

您应该为这些标签使用特殊类。您不能根据 CSS 中的子元素属性来设置父元素的样式 [目前]。

<label class='radio'><input type='radio'></label>

你的样式表会说

label.radio{
  /* add styles here */
}
于 2013-05-13T16:20:59.383 回答
4

首先 - 更正

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Ø 的使用类的解决方案。

于 2013-05-14T00:58:45.310 回答
1

您尝试做的事情是不可能的(无论如何仅使用 CSS)。该[attribute=value]语法通过检查该特定元素的属性值来工作。因此,for=[type="radio"]]正在寻找类似的东西<label for='[type="radio"]'>(如果语法甚至有效)。

于 2013-05-13T16:18:01.740 回答
-3

试试这个:

input[type=radio]
{
CSS goes here
}
于 2013-05-13T16:16:43.717 回答