【问题标题】:How to get CSS to select ID that begins with a string (not in Javascript)?如何让 CSS 选择以字符串开头的 ID(不是在 Javascript 中)?
【发布时间】:2012-07-14 20:21:37
【问题描述】:

如果 HTML 有这样的元素:

id="product42"
id="product43"
...

如何匹配所有以“产品”开头的 id?

我已经看到完全使用 javascript 执行此操作的答案,但如何仅使用 CSS 执行此操作?

【问题讨论】:

    标签: html css css-selectors


    【解决方案1】:

    我也想分享这个解决方案,也许将来它可以帮助某人。
    正如其他人所说,您可以为id[id^=product]

    但我们也可以举一个class 的例子: [class^="product-"] 表示类以产品开头 还有* 这样[class*="product-"]

    这是一个简单的例子:

    /* Icons */
    [class^="icon-"], [class*=" icon-"] {
      /* use !important to prevent issues with browser extensions that change fonts */
      font-family: 'mk-font' !important;
      font-size: 3em;
    }
    

    祝你好运……

    【讨论】:

      【解决方案2】:

      我注意到还有另一个 CSS 选择器可以做同样的事情。 语法如下:

      [id|="name_id"]
      

      这将选择以双引号括起来的单词开头的所有元素 ID。

      【讨论】:

      • 您是如何注意到的?参考?
      • 这里的文档:w3.org/TR/selectors-3/#attribute-selectors 这应该选择所有以“name_id”开头或等于“name_id”的id
      • att|=valatt^=val 不同。从提到的参考资料中:|= 选择器“表示具有 att 属性的元素,其值要么正好是“val”,要么以“val”开头紧跟“-”。”所以一个|= 不会匹配像“product42”这样的 id,但会匹配“product-42”。
      【解决方案3】:
      [id^=product]
      

      ^= 表示“以”开头。反之,$= 表示“以”结尾。

      这些符号实际上是从 Regex 语法中借用的,其中 ^$ 分别表示“字符串开头”和“字符串结尾”。

      有关完整信息,请参阅the specs

      【讨论】:

      • 感谢您的方法和解释,我已经编辑了我的问题,使其更加清晰。出于好奇,有没有办法匹配 id 字符串中的字符串?
      • the specs,他们比我解释得更好!
      • @itamar:感谢您尝试编辑我的答案,但仅当值包含不是有效标识符的字符时才需要引用。 product 显然是一个有效的标识符,因此不需要引号。
      • 这类选择器的特异性很低
      • @Emerald214 :not([id^=product])
      【解决方案4】:

      我会这样做:

      [id^="product"] {
        ...
      }
      

      理想情况下,使用一个类。这就是类的用途:

      <div id="product176" class="product"></div>
      <div id="product177" class="product"></div>
      <div id="product178" class="product"></div>
      

      现在选择器变成了:

      .product {
        ...
      }
      

      【讨论】:

      • @Blender,谢谢,我选择了另一个答案,因为它向我解释了更多并理解所使用的符号。我不能在这种情况下使用类,否则会更好。
      【解决方案5】:

      使用attribute selector

      [id^=product]{property:value}
      

      【讨论】:

        猜你喜欢
        • 2011-06-27
        • 1970-01-01
        • 2022-08-24
        • 1970-01-01
        • 2015-09-05
        • 2017-11-04
        • 2020-01-03
        相关资源
        最近更新 更多