【发布时间】:2012-07-14 20:21:37
【问题描述】:
如果 HTML 有这样的元素:
id="product42"
id="product43"
...
如何匹配所有以“产品”开头的 id?
我已经看到完全使用 javascript 执行此操作的答案,但如何仅使用 CSS 执行此操作?
【问题讨论】:
标签: html css css-selectors
如果 HTML 有这样的元素:
id="product42"
id="product43"
...
如何匹配所有以“产品”开头的 id?
我已经看到完全使用 javascript 执行此操作的答案,但如何仅使用 CSS 执行此操作?
【问题讨论】:
标签: html css css-selectors
我也想分享这个解决方案,也许将来它可以帮助某人。
正如其他人所说,您可以为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;
}
祝你好运……
【讨论】:
我注意到还有另一个 CSS 选择器可以做同样的事情。 语法如下:
[id|="name_id"]
这将选择以双引号括起来的单词开头的所有元素 ID。
【讨论】:
att|=val 与 att^=val 不同。从提到的参考资料中:|= 选择器“表示具有 att 属性的元素,其值要么正好是“val”,要么以“val”开头紧跟“-”。”所以一个|= 不会匹配像“product42”这样的 id,但会匹配“product-42”。
[id^=product]
^= 表示“以”开头。反之,$= 表示“以”结尾。
这些符号实际上是从 Regex 语法中借用的,其中 ^ 和 $ 分别表示“字符串开头”和“字符串结尾”。
有关完整信息,请参阅the specs。
【讨论】:
product 显然是一个有效的标识符,因此不需要引号。
:not([id^=product])
我会这样做:
[id^="product"] {
...
}
理想情况下,使用一个类。这就是类的用途:
<div id="product176" class="product"></div>
<div id="product177" class="product"></div>
<div id="product178" class="product"></div>
现在选择器变成了:
.product {
...
}
【讨论】:
[id^=product]{property:value}
【讨论】: