Risposte:
[id^=product]
^=
indica "inizia con". Al contrario, $=
indica "termina con".
I simboli sono in realtà presi in prestito dalla sintassi Regex, dove ^
e $
significano rispettivamente "inizio della stringa" e "fine della stringa".
Vedi le specifiche per informazioni complete.
product
è chiaramente un identificatore valido e quindi non necessita di virgolette.
:not([id^=product])
Lo farei così:
[id^="product"] {
...
}
Idealmente, usa una classe. Ecco a cosa servono le classi:
<div id="product176" class="product"></div>
<div id="product177" class="product"></div>
<div id="product178" class="product"></div>
E ora il selettore diventa:
.product {
...
}
Usa il selettore di attributi
[id^=product]{property:value}
Ho notato che esiste un altro selettore CSS che fa la stessa cosa. La sintassi è la seguente:
[id|="name_id"]
Questo selezionerà tutti gli elementi ID che iniziano con la parola racchiusa tra virgolette.
att|=val
NON è lo stesso di att^=val
. Dal riferimento citato: il |=
selettore "Rappresenta un elemento con l'attributo att, il suo valore o è esattamente" val "o inizia con" val " immediatamente seguito da" - " ." Quindi un ID come "product42" non verrebbe abbinato da |=
, ma "product-42" sarebbe.