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.
product
jest 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|=val
nie 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ł.