Odpowiedzi:
[id^=product]
^=wskazuje „zaczyna się od”. I odwrotnie, $=wskazuje „kończy się na”.
Symbole są faktycznie zapożyczone ze składni Regex, gdzie ^i $oznaczają odpowiednio „początek łańcucha” i „koniec łańcucha”.
Zobacz specyfikację, aby uzyskać pełne informacje.
productjest wyraźnie prawidłowym identyfikatorem i dlatego nie wymaga cudzysłowów.
:not([id^=product])
Zrobiłbym to w ten sposób:
[id^="product"] {
...
}
Najlepiej użyj klasy. Do tego służą klasy:
<div id="product176" class="product"></div>
<div id="product177" class="product"></div>
<div id="product178" class="product"></div>
A teraz selektor staje się:
.product {
...
}
Użyj selektora atrybutów
[id^=product]{property:value}
Zauważyłem, że istnieje inny selektor CSS, który robi to samo. Składnia jest następująca:
[id|="name_id"]
Spowoduje to wybranie identyfikatora wszystkich elementów, który zaczyna się od słowa zawartego w podwójnych cudzysłowach.
att|=valnie jest taki sam jak att^=val. Ze wspomnianego odniesienia: |=Selektor „Reprezentuje element z atrybutem att, którego wartość to albo dokładnie„ val ”, albo zaczynająca się od„ val ”, po którym bezpośrednio następuje„ - ” .” Tak więc identyfikator podobny do „product42” nie pasowałby do |=, ale „produkt-42” by to zrobił.