¿Hay alguna diferencia funcional entre el CSS 2.1 :after
y los ::after
pseudo-selectores CSS 3 (aparte de que ::after
no es compatible con navegadores antiguos)? ¿Hay alguna razón práctica para usar la nueva especificación?
¿Hay alguna diferencia funcional entre el CSS 2.1 :after
y los ::after
pseudo-selectores CSS 3 (aparte de que ::after
no es compatible con navegadores antiguos)? ¿Hay alguna razón práctica para usar la nueva especificación?
Respuestas:
Es pseudo- clase vs pseudo- elemento de distinción.
A excepción de ::first-line
, ::first-letter
, ::before
y ::after
(que han sido alrededor de un poco de tiempo y se puede utilizar con dos puntos individuales si necesita ayuda IE8), pseudo- elementos requieren dos puntos dobles.
Las pseudo-clases seleccionan elementos reales por sí mismos, puede usar :first-child
o :nth-of-type(n)
para seleccionar los primeros o específicos <p>
en un div, por ejemplo.
(Y también estados de elementos reales como :hover
y :focus
.)
Los seudoelementos se dirigen a una subparte de un elemento como ::first-line
o ::first-letter
, cosas que no son elementos por derecho propio.
En realidad, mejor descripción aquí: http://bricss.net/post/10768584657/know-your-lingo-pseudo-class-vs-pseudo-element
También aquí: http://www.evotech.net/blog/2007/ 05 / after-v-after-what-is-double-colon-notation /
:after
y ::after
de manera intercambiable con un comportamiento idéntico con la excepción de Internet Explorer 8 que, como las notas de interrogación, requiere la única colon.
Los selectores de CSS ::after
son algunos elementos virtuales que no están disponibles como elemento explícito en el árbol DOM. Se denominan " pseudo-elementos " y se utilizan para insertar algún contenido antes / después de un elemento (por ejemplo ::before
, ::after
) o seleccionar alguna parte de un elemento (por ejemplo:) ::first-letter
. Actualmente hay sólo 5 pseudo elementos estándar: after, before, first-letter, first-line, selection
.
Por otro lado, hay otros tipos de selectores llamados " pseudo-clases ", que se utilizan para definir un estado especial de un elemento (como como :hover
, :focus
, :nth-child(n)
). Estos seleccionarán todo un elemento existente en DOM. Las pseudo clases son una larga lista con más de 30 elementos.
Inicialmente (en CSS2 y CSS1), la sintaxis de dos puntos se utilizó para pseudo-clases y pseudo-elementos. Pero, en CSS3, la ::
sintaxis reemplazó la :
notación de pseudoelementos para distinguirlos mejor.
Por compatibilidad con versiones anteriores, la antigua sintaxis de dos puntos es aceptable para pseudoelementos como as :after
(los navegadores todavía admiten la sintaxis anterior con un punto y coma). Solo IE-8 no admite la nueva sintaxis (use dos puntos si desea admitir IE8).