Ответы:
[id^=product]
^=указывает «начинается с». И наоборот, $=указывает «заканчивается».
Символы фактически заимствованы из синтаксиса Regex, где ^и $означают «начало строки» и «конец строки» соответственно.
Смотрите спецификации для полной информации.
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}
Я заметил, что есть другой селектор CSS, который делает то же самое. Синтаксис выглядит следующим образом:
[id|="name_id"]
Это выберет идентификатор всех элементов, который начинается со слова, заключенного в двойные кавычки.
att|=valэто не то же самое, что att^=val. Из упомянутой ссылки: |=Селектор "Представляет элемент с атрибутом att, его значение либо точно равно" val ", либо начинается с" val ", за которым сразу следует" - " ." Таким образом, идентификатор, такой как "product42", не будет соответствовать |=, но "товар-42" был бы.