108

CSS有什么办法可以根据输入的类型来定位所有输入吗?我有一个用于各种禁用表单元素的禁用类,我正在为文本框设置背景颜色,但我不希望我的复选框获得那种颜色。

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

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

编辑

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

INPUT[type='text']:disabled那会更好地完全摆脱我的课...

编辑

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

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

这适用于 IE7


抱歉,简短的回答是否定的。CSS (2.1) 只会标记 DOM 的元素,而不是它们的属性。您必须对每个输入应用一个特定的类。

我知道这很糟糕,因为那将非常有用。

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

4

4 回答 4

159

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

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

具有属性类型的元素输入,其包含等于、开始、包含或结束于某个值的值。

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

  • 父母 > 孩子有:p > span { font-weight: bold; }
  • 前面有 ~ 元素,即:span ~ span { color: blue; }

哪个 for<p><span/><span/></p>会有效地给你:

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

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

我很惊讶其他人都认为这是不可能的。CSS 属性选择器已经出现了一段时间。我想是时候清理我们的 .css 文件了。

于 2009-01-22T21:00:26.563 回答
3

可悲的是,其他海报是正确的,您 ...实际上已被 kRON 纠正,对 IE7 和严格的文档没问题,但我们大多数有 IE6 要求的人都被简化为 JS 或类引用,但它一个 CSS2 属性,只是一个没有 IE^h^h 浏览器足够支持的属性。

出于完整性考虑,类型选择器是 - 类似于 xpath - 的形式[attribute=value],但存在许多有趣的变体。当它可用时,它非常强大,记住 IE8 是件好事。

于 2009-01-22T20:55:02.953 回答
1

你可以用 jQuery 做到这一点。使用它们的选择器,您可以按属性进行选择,例如类型。但是,这确实要求您的用户打开 Javascript,并下载一个附加文件,但如果它有效...

于 2009-01-22T20:47:33.187 回答
0

抱歉,简短的回答是否定的。CSS (2.1) 只会标记 DOM 的元素,而不是它们的属性。您必须对每个输入应用一个特定的类。

我知道这很糟糕,因为那将非常有用。

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

于 2009-01-22T20:43:48.217 回答