¿Qué significa esto *|* en CSS?


Acabo de ver esto: *|*:link con Firebug. Parece ser un estilo predeterminado que añade Firefox, pero ¿qué significa *|*?

Author: BoltClock, 2010-08-31

2 answers

Significa "todos los elementos en todos los espacios de nombres que son :link."

Más sobre selectores universales y espacios de nombres.

 31
Author: Frankie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-19 17:47:40

*|* es un selector universal calificado como espacio de nombres. El primero * significa cualquier espacio de nombres (incluyendo el espacio de nombres predeterminado y la falta de un espacio de nombres), y el segundo * significa cualquier tipo de elemento.

Como se mencionó, el selector *|*:link representa cualquier elemento en cualquier espacio de nombres que sea un hipervínculo no visitado (:link). Para ser claros, el prefijo *| significa ciertos elementos en cualquier espacio de nombres, incluyendo:

  • Elementos en el espacio de nombres predeterminado (p. ej. XHTML)
  • Elementos en cualquier otro espacio de nombres (por ejemplo, XUL en Firefox)
  • Elementos que no están en un espacio de nombres

CSS tiene un módulo dedicado a las declaraciones de espacio de nombres.

El tipo de documento determina qué tipo de elementos deben designarse como hipervínculos: {[16]]}

  • En HTML y XHTML, esto es siempre un elemento a con un atributo href.

  • En XUL, creo que este es un elemento label.text-link con un href atributo.

Tenga en cuenta que los espacios de nombres CSS solo son útiles cuando se usa CSS para dar estilo a documentos XML, u otros tipos de documentos que definen espacios de nombres de manera similar. Esto incluye páginas XHTML con espacios de nombres XML personalizados. En los documentos HTML normales generalmente no hay necesidad de usar prefijos de espacios de nombres en los selectores.

Dicho esto, los navegadores declaran un espacio de nombres predeterminado en sus hojas de estilos de agente de usuario que corresponde a XHTML para HTML/XHTML de todos modos, para permitir la interoperabilidad con otros Lenguajes basados en XML. En el caso de Firefox, esto es obviamente para trabajar con XHTML y 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);

Dado que los elementos HTML de (X)viven en el espacio de nombres predeterminado, los selectores para emparejar solo estos elementos no necesitan tener un prefijo de espacio de nombres. Esta es la razón técnica por la que, como mencioné anteriormente, no hay necesidad de usar prefijos de espacio de nombres en los selectores.

Tenga en cuenta también que si desea apuntar a cualquier tipo de elemento con un prefijo de espacio de nombres, el * en el lado derecho debe estar allí, por lo que algo como *|:link no sería válido. Ver esta respuesta para más detalles.

 14
Author: BoltClock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:52:34