Как заставить CSS выбрать идентификатор, начинающийся со строки (не в Javascript)?

Если HTML имеет такие элементы:

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

Как мне сопоставить все эти id, начинающиеся с "product"?

Я видел ответы, которые делают это именно с помощью javascript, но как это сделать только с CSS?

Ответ 1

[id^=product]

^= указывает, что "начинается с". И наоборот, $= указывает "заканчивается на".

Символы фактически заимствованы из синтаксиса Regex, где ^ и $ означают "начало строки" и "конец строки" соответственно.

См. спецификации для полной информации.

Ответ 2

Я бы сделал это вот так:

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

В идеале используйте класс. Это классы для:

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

И теперь селектор становится:

.product {
  ...
}

Ответ 4

Я заметил, что есть другой селектор CSS, который делает то же самое. Синтаксис выглядит следующим образом:

[id|="name_id"]

Здесь будет выбран идентификатор всех элементов, который начинается со слова, заключенного в двойные кавычки.