【问题标题】:CSS Selector for <input type="?"<input type="?" 的 CSS 选择器
【发布时间】:2010-10-03 00:16:28
【问题描述】:

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

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

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

编辑

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

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

编辑

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

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

这在 IE7 中有效

【问题讨论】:

  • 我在an article 中写了一些关于 CSS 属性选择器的详细信息。

标签: css internet-explorer css-selectors


【解决方案1】:

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

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

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

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

  • 父级 > 具有:p &gt; span { font-weight: bold; } 的子级
  • 前面有 ~ 元素,即:span ~ span { color: blue; }

&lt;p&gt;&lt;span/&gt;&lt;span/&gt;&lt;/p&gt; 会有效地给你:

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

进一步阅读: Browser CSS compatibility on quirksmode.com

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

【讨论】:

  • 好的,我试过了,但现在不行了,所以我的语法一定是搞砸了。
  • 你让我开心!现在,如果你想让我的一周告诉我它可以在 IE6 中完成,而无需使用表达式嘿嘿:-) j/k there
  • 不幸的是它不能。出于宗教观点,我不再支持 IE6,并建议我们也这样做。今天我用IE条件注释告诉用户,使用IE6他们的电脑和隐私有风险,应该立即升级:P
  • 我想我已经习惯了支持 IE6 我只是认为它在 IE7 中也不起作用
  • 我希望我能停止支持 IE6,但我不能也不能按照你的建议去做......但我真的真的很希望我能这样做;-)
【解决方案2】:

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

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

【讨论】:

  • 您有更新的浏览器支持参考吗?那是基于 IE7 beta 很想看到 IE8
  • IE8 仍处于测试阶段,但 quirksmode 说“是”:quirksmode.org/css/contents.html
  • 我仍然支持 IE6,只是没有增加这个微小的视觉调整。
  • 很公平,根据标题回答是我的错误,我倾向于回答一般情况-我真的应该多阅读问题:)
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

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

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

    【讨论】:

    • jquery 是这样做的方法,或者只是 JavaScript
    • Afaict,这个答案不正确(CSS 2.1 部分):w3.org/TR/CSS21/selector.html#attribute-selectors。如果不是,请澄清你的答案。
    • 对不起 - 你说的很对。我对 IE7 的期望最低,因为开发人员仍然经常需要同时支持 IE6。应该更仔细地阅读问题并完成我的作业。
    猜你喜欢
    • 2018-08-22
    • 2023-04-06
    • 2021-08-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 2012-03-25
    • 2022-07-01
    相关资源
    最近更新 更多