a:hover
¿Por qué se llama una "pseudoclase"?¿Por qué se llama una pseudo clase?
¿Hay alguna similitud con el concepto de "clase"?
a:hover
¿Por qué se llama una "pseudoclase"?¿Por qué se llama una pseudo clase?
¿Hay alguna similitud con el concepto de "clase"?
En términos de CSS, una clase es un selector que comienza con un punto, por ejemplo.
.foo { ... }
Sería utilizado en forma
<div class="foo">
Este uso de "clase" es más en el sentido de "un conjunto o categoría de las cosas que tiene una característica y diferenciada de las demás por tipo común o calidad ", en lugar de tomar prestado de la terminología OO.
Una pseudoclase no es "realmente real", ya que el agente de usuario define cuándo y/o cuánto contenido califica (como :hover
, :active
, etc.).
Es pseudo porque no lo hizo; el navegador lo 'creó' y le permite configurarlo para cambiar el aspecto del enlace cuando está en ese estado.
Desde el w3c CSS2 selector spec:
CSS introduce los conceptos de pseudo-elementos y pseudo-clases para permitir el formato basado en la información que se encuentra fuera de la estructura del documento.
Los pseudo-elementos crean abstracciones sobre el árbol del documento más allá de las especificadas por el idioma del documento. Por ejemplo, los idiomas de los documentos no ofrecen mecanismos para acceder a la primera letra o primera línea del contenido de un elemento. Los pseudo-elementos CSS permiten a los diseñadores de hojas de estilo referirse a esta información inaccesible. Los pseudoelementos también pueden proporcionar a los diseñadores de hojas de estilo una forma de asignar estilo a contenido que no existe en el documento fuente (por ejemplo, los pseudoelementos: antes y después dan acceso al contenido generado).
Las pseudo clases clasifican los elementos en características que no sean su nombre, atributos o contenido; en principio, características que no pueden deducirse del árbol de documentos. Las pseudo-clases pueden ser dinámicas, en el sentido de que un elemento puede adquirir o perder una pseudo-clase mientras el usuario interactúa con el documento. Las excepciones son ': first-child', que se puede deducir del árbol de documentos, y ': lang()', que se puede deducir del árbol de documentos en algunos casos.
Así que, básicamente, una pseudo-clase es algo que se puede adjuntar un estilo, pero nunca imprimir hacia fuera usted mismo en el código HTML. Además, un pseudo-clas puede ser adquirido y perdido dependiendo de la interacción del usuario con la UI.
Con CSS2/3 que permite reglas de elementos más sofisticados (cosas como entrada [type = casilla de verificación] y similares, el término pseudo-clase parece cada vez más anticuado.
Sin embargo, pseudo-clases son la solo identificadores de CSS que (más o menos) cambian confiablemente con las interacciones del usuario. Con los selectores de atributos y lo que no, la mayoría de los navegadores tienden a ir con el estado de todos los elementos en la carga de la página y se ignoran los cambios realizados.Pero con pseudo-clases, en realidad cambian el estilo cuando la pseudo-clase se convierte en verdadera (o falsa).
Así que con esa definición específica en mente, son clases porque la regla se aplica a cualquier elemento que comparte el mismo "estado" y por lo tanto se puede considerar una "clase", pero es pseudo porque no es cierto clase definida por atributo y porque la "clase" puede o no ser cierta en cualquier momento dado, se ve la página.
También es interesante observar, creo, que con ciertas pseudo-clases basadas en UI (estoy pensando específicamente en :hover
) solo un elemento en un momento dado realmente puede tener esa "clase" por lo que es casi más de un pseudo-id, basado en mi definición anterior.
pero ¿por qué es una clase? Si solo puede colocar el cursor sobre un punto o sobre un área de la pantalla a la vez, solo una p puede tomar la regla CSS en cualquier momento. ¿La clase no implica varios elementos que pertenecen a un grupo común, y una regla de estilo de clase significa que todos heredarán esa regla? – Anthony
@Anthony: la pseudoclase se puede suponer como un estado. Y cada elemento que tiene el estado * hover * se puede clasificar por ': hover'. Entonces, cuando un elemento 'a' obtiene el estado * hover *, puede seleccionarse con': hover'. – Gumbo