<输入类型=“?”的CSS选择器


105

CSS是否可以根据类型将所有输入作为目标?我有一个禁用类,可以在各种禁用表单元素上使用,并且我正在设置文本框的背景色,但是我不希望我的复选框获得该颜色。

我知道我可以使用单独的类来做到这一点,但如果可能的话,我宁愿使用CSS。我敢肯定,我可以在javascript中设置它,但是再次寻找CSS。

我的目标是IE7 +。所以我认为我不能使用CSS3。

编辑

使用CSS3,我可以做类似的事情吗?

INPUT[type='text']:disabled 甚至完全摆脱我的课...

编辑

好的,谢谢您的帮助!因此,这是一个选择器,它可以修改所有禁用的文本框和区域,而无需设置任何类,当我开始这个问题时,我从未想到这是可能的...

INPUT[disabled][type='text'], TEXTAREA[disabled]
{   
    background-color: Silver;
}

这在IE7中有效


2
我写了一篇有关CSS属性选择器的详细信息的文章
Sarfraz 2010年

Answers:


155

是。IE7 +支持属性选择器:

input[type=radio]
input[type^=ra]
input[type*=d]
input[type$=io]

属性类型的元素输入包含等于,开始于,包含或终止于某个值的值。

其他安全(IE7 +)选择器是:

  • 父>子: p > span { font-weight: bold; }
  • 在〜元素之前,它是: span ~ span { color: blue; }

<p><span/><span/></p>将有效地为您提供:

<p>
    <span style="font-weight: bold;">
    <span style="font-weight: bold; color: blue;">
</p>

进一步阅读: quirksmode.com上的浏览器CSS兼容性

我惊讶于其他所有人都认为无法完成。CSS属性选择器已经存在了一段时间。我想是时候我们清理.css文件了。


好的,我已经尝试过了,但是现在不起作用了,所以我必须弄清楚我的语法。
2009年

你让我今天很开心!现在,如果您想让我告诉我这可以在IE6中完成,而无需使用Expressions hehe :-) j / k there
JoshBerke

13
不幸的是不能。我出于宗教观点不再支持IE6,并建议我们也这样做。今天,我使用IE的条件注释来告诉用户,他们的计算机和隐私权有使用IE6的风险,因此他们应立即升级:P
FilipDupanović09年

1
我想我已经很习惯支持IE6了,我只是以为它在IE7中也不起作用
TJ L

4
我希望我能停止支持IE6,但是我不能按照你的建议去做...但是我真的很希望我能;-)
JoshBerke

3

遗憾的是,其他张贴者是正确的 ……实际上,如kRON所纠正的那样,对IE7和严格的文档还可以,但是我们大多数对 IE6的要求仅限于JS或类引用,但这一个CSS2属性,只是一个没有IE ^ h ^ h浏览器足够支持的属性。

出于完整性考虑,类型选择器的形式类似于xpath,[attribute=value]但存在许多有趣的变体。这是相当强大的,当它的面世,好东西留在你的头IE8。


您有更新的浏览器支持参考吗?那是基于IE7 beta版,希望看到IE8
JoshBerke

IE8仍处于测试阶段,但quirksmode说“是”:quirksmode.org/css/contents.html
annakata

我仍在支持IE6,只是不增加这种微小的视觉调整。
2009年

公平地说,根据标题回答是我的错误,我倾向于回答一般情况-我真的应该读更多的问题:)
annakata

1

您可以使用jQuery完成此操作。使用其选择器,您可以按属性(例如类型)进行选择。但是,这确实需要您的用户打开Javascript,并需要下载其他文件,但是如果可以的话...


0

抱歉,简短的回答是“否”。CSS(2.1)仅标记DOM的元素,而不标记其属性。您必须将特定的类应用于每个输入。

我知道Bummer,因为那将非常有用。

我知道您已经说过,您更喜欢CSS而不是JavaScript,但是您仍然应该考虑使用jQuery。它提供了一种非常干净优雅的方法,可以基于属性向DOM元素添加样式。


jQuery是执行此操作的方法,或者一般来说就是JavaScript
TravisO,2009年

4
Afaict,这个答案不正确(CSS 2.1部分):w3.org/TR/CSS21/selector.html#attribute-selectors。如果没有,请澄清您的答案。
cic

1
抱歉-您说得对。我只是对IE7期望最少,因为经常需要开发人员同时支持IE6。应该更仔细地阅读问题并完成作业。
Phil.Wheeler
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.