【问题标题】:Is there a CSS selector for elements lacking an attribute?缺少属性的元素是否有 CSS 选择器?
【发布时间】:2011-11-02 05:38:49
【问题描述】:

我了解css规则可以针对属性值指定的元素,例如:

input[type="text"] {}

我可以制定一个针对省略某个属性的元素的规则吗?例如,我可以定位缺少 href 的元素或未指定类型的元素吗?

【问题讨论】:

    标签: html css css-selectors


    【解决方案1】:

    您可以遵循以下模式:

    a:not([href])
    input:not([type])
    

    attribute selector 用于选择具有指定属性的元素。

    所有现代浏览器和 IE9+ 都支持:not,如果你需要 IE8 或更低版本的支持,那你就倒霉了。

    【讨论】:

    • +1 这是一个供好奇者使用的演示:jsfiddle.net/Z2sHD/2 旁注:如果我错了,请纠正我,但<a> 需要一个 href 属性出现在为了成为,你知道的,有效的 HTML。
    • @Wesley 没有,a 元素可以只是一个锚点,只有 name 属性
    • 啊是的没错,不知道我从哪里得到这个想法。我想我完全在考虑其他事情。
    • 另外值得注意的是,可以只选择包含 NO(自定义)属性的所有元素。在得出公认的明显答案之前,我绞尽脑汁。虽然你不能做类似foo:not(foo[*]){ color: red; } 的事情,但你可以做一个像foo{ color: red; } foo[green]{ color: green; } foo[blue]{ color: blue; } 这样的标准CSS 级联来定义一个“默认”值。这有一个很好的副作用,就是让任何其他/无法识别的值回退到默认值,而不是定义像 foo[normal],foo[default]{ color:red; } 这样的东西。
    • 非常感谢!!
    【解决方案2】:

    对于链接,您可以简单地使用:

    a { color: red; }
    a:link { color: green; }
    

    小提琴:http://jsfiddle.net/ZHTXS/ 不需要 javascript。

    对于表单属性,请使用上面提到的非属性模式input:not([type]),如果您需要支持旧版本的 IE,我可能会添加一个类并使用与条件 cmets 链接的 IE 特定样式表。

    【讨论】:

    • 虽然这对锚来说是一个聪明的答案,但它只适用于锚。
    【解决方案3】:

    你总是可以为 a 和 a href 设置不同的样式

    检查这个: http://jsfiddle.net/uy2sj/

    【讨论】:

    • 正如我在下面的答案中所说的,这仅对锚有用。虽然标题可能声明了锚点,但 OP 指定了所有元素,甚至包括一个输入示例。
    【解决方案4】:

    对我有用的唯一解决方案是将a:link { } 放在我的代码中。

    我也试过了

    a:not([href]) input:not([href=""]) input:not([href~=""])

    但是对于带有多个用作标准代码块的 a 标签的 .scss 文件(不是我的想法),这是唯一的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      相关资源
      最近更新 更多