Ho appena visto questo: *|*:link
con Firebug. Sembra che lo stile predefinito sia Firefox, ma cosa significa "*|*
"?Che cosa significa * | * questo significato nei CSS?
risposta
Significa "tutti gli elementi in tutti gli spazi dei nomi che sono :link
".
*|*
è un namespace-qualified universal selector. Il primo *
indica qualsiasi spazio dei nomi (incluso lo spazio dei nomi predefinito e la mancanza di uno spazio dei nomi) e il secondo *
indica qualsiasi tipo di elemento.
Come accennato, il selettore *|*:link
rappresenta qualsiasi elemento in qualsiasi spazio dei nomi che sia un collegamento ipertestuale non visitato (:link
). Per essere chiari, il prefisso *|
significa alcuni elementi in qualsiasi namespace, tra cui:
- elementi nel namespace predefinito (ad esempio Valid)
- elementi in qualsiasi altro spazio (es XUL a Firefox)
- elementi che non sono in uno spazio
CSS has a module dedicated to namespace declarations.
Il tipo di documento determina quale tipo di elementi deve essere designato come ip erlinks:
In HTML e XHTML, questo è sempre un elemento
a
con un attributohref
.In XUL, credo che questo sia un elemento
label.text-link
con un attributohref
.
Si noti che gli spazi dei nomi CSS sono utili solo quando si utilizza CSS per lo stile di documenti XML o altri tipi di documenti che definiscono lo spazio dei nomi in modo simile. Ciò include le pagine XHTML con spazi dei nomi XML personalizzati. In normali documenti HTML di solito non è necessario utilizzare i prefissi dei namespace nei selettori.
Detto questo, i browser dichiarano uno spazio dei nomi predefinito nei fogli di stile del programma utente corrispondente a XHTML per HTML/XHTML in ogni caso, per consentire l'interoperabilità con altri linguaggi basati su XML. Nel caso di Firefox, questo è ovviamente per lavorare sia con XHTML e XUL:
@namespace url(http://www.w3.org/1999/xhtml); /* set default namespace to HTML */
@namespace xul url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
Dal momento che (X) elementi HTML vivono nello spazio dei nomi di default, selettori per corrispondenza solo questi elementi non hanno bisogno di essere namespace-prefisso. Questa è la ragione tecnica per cui, come ho detto sopra, non è necessario utilizzare i prefissi dei namespace nei selettori.
Si noti inoltre che se si desidera indirizzare qualsiasi tipo di elemento con un prefisso di namespace, lo *
sul lato destro deve essere lì, quindi qualcosa come *|:link
non sarebbe valido. Vedi this answer per i dettagli.
Namespace. Non posso commentare con cognizione di causa più di quello http://ajaxian.com/archives/w3c-css-namespace-now-a-candidate-recommendation –