¿Qué son las pseudo clases y los pseudo elementos en CSS?
En el desarrollo web, el manejo adecuado de estilos en CSS es crucial para crear interfaces de usuario atractivas y funcionales. Dos de las características avanzadas que más se utilizan para estilizar componentes son las pseudo clases y los pseudo elementos. Estos nos permiten agregar estilos basados en ciertos estados o insertar contenido adicional sin cambiar el HTML. A continuación, te explico cómo se implementan y para qué sirven.
¿Cómo se configuran las pseudo clases en CSS?
Las pseudo clases permiten aplicar estilos a un elemento HTML según su estado, sin necesidad de añadir clases adicionales en el HTML. Estas son llamadas mediante el uso de dos puntos seguidos del nombre de la pseudo clase. Aquí te presento algunos ejemplos importantes:
hover: Aplica un estilo cuando el usuario posa el cursor sobre un elemento.
a:hover{color:red;}
active: Afecta a un elemento cuando está siendo activado (ej., presionado).
a:active{color:blue;}
Este enfoque te da control sobre cómo los elementos responden a la interacción del usuario, mejorando así la experiencia de uso.
¿Qué son los pseudo elementos y cómo se utilizan?
Los pseudo elementos se utilizan para designar y estilizar partes específicas de un elemento. Se introducen utilizando dobles dos puntos (::), y puedes ver un ejemplo básico de su utilidad a continuación:
::before y ::after: Permiten insertar contenido antes o después del contenido del elemento respectivo. Es especialmente útil para generar efectos decorativos:
En el ejemplo anterior, ::after se utiliza para agregar una línea decorativa debajo de un enlace sin modificar el documento HTML.
¿Qué metodología recomendada para nombrar clases en CSS?
Como desarrollador, uno de los retos más comunes es mantener un sistema de nombres claro para las clases CSS. En esta clase, se menciona la metodología BEM (Block, Element, Modifier) como una herramienta efectiva. BEM proporciona un sistema estructurado para nombrar tus clases, asegurando que sean escalables y comprensibles.
Bloques: Componentes autónomos, como .main-nav.
Elementos: Partes de un bloque que sirven una función determinada, como .main-nav__item.
Modificadores: Variantes del bloque o elemento, como .main-nav--active.
Para más información y recursos sobre BEM, consulta los enlaces que se proporcionan en la clase.
¿Cómo afecta el estilo predeterminado del navegador?
Es fundamental entender que los navegadores aplican algunos estilos por defecto a los elementos HTML. Estos estilos pueden incluir márgenes, paddings y decoraciones como subrayados en enlaces. Es vital dominar cómo sobrescribir estos estilos para que todos los elementos se comporten según tus especificaciones de diseño.
ul{list-style: none;padding:0;margin:0;}
¿Qué es el box model y cómo influye el padding y margin?
El box model de CSS es la base para entender cómo el espacio y el tamaño de los elementos se determinan en el navegador:
Padding: Espacio interno entre el contenido de un elemento y su borde. Al ajustar el padding, incrementas la distancia entre el contenido y los bordes.
Margin: Espacio externo que separa un elemento de otro en la página. Es útil para separar y alinear elementos.
Comprender cómo aplicar y manipular estas propiedades te ayudará a controlar mejor el diseño y la disposición de los elementos en tu página.
Adentrarte en el mundo de pseudo clases y pseudo elementos mejorará significativamente tus habilidades de CSS y te permitirá crear interfaces más dinámicas y responsivas. ¡Sigue profundizando y experimentando!
Si tienes etiquetas dentro de la etiqueta a la que le estás aplicando estilos y le pones una clase, puedes aplicar estilos únicamente a las etiquetas dentro de esa clase de la siguiente manera: .clase etiqueta {}
/* Estilos a etiqueta "a" dentro de una clase */.main-nav__item a{color:white;}
Usa background-color para ver las cajas de los elementos.
Pseudo clases
Define el estilo de un estado especial de un elemento.
Define el estilo de una parte específica de un elemento.
Agregar al final de la clase ::nombreAccion
/* Pseudo elemento */.main-nav__item a::after{content:" | ";/* despues del elemento, agrega esto */}
Lista de Pseudo Elementos
Tremendo aporte jejejeje. Lo voy a guardar en mi notion UWU. por cierto y aprovechando que eres del team platzi!, seria genial que podamos guardar los comentarios en una lista a la cual podamos acceder siempre!. y así evitarnos el guardar los posts en otros lugares, Agilizaría mucho nuestro flujo de estuido uwu.
muy buen resumen ahora me queda claro la pseudo calse y los pseaudo elementos
Talvez sea muy básico pero me gusto
de dónde sacaste los iconos? con qué programa los dibujaste tú?
A diferencia de las pseudo-clases los pseudo-elementos no describen un estado especial, sino que permiten añadir estilos a una parte concreta (a veces muy específica) de un elemento.
/* Ejemplo */p::first-letter {color: red; font-size: 20px;}/* Toma solo la primera letra de un elemento, no todo su contenido. Solo la primera letra.*/
Lista de pseudo-elementos: https://developer.mozilla.org/es/docs/Web/CSS/Pseudoelementos
.
¿La diferencia?
Básicamente los pseudo-elementos por lo general hacen referencia a partes específicas de un elemento, mientras que las pseudo-clases hacen referencia al estado del elemento.
No conocía los Pseudoelementos y me quede sorprendido!
Habra forma de combinar los 2?
Por ejemplo me imagino lo siguiente:
En 1 botón al tener el mouse sobre el (:hover) que cambie el color de la primera letra a color rojo (::first-letter)
Gracias por tu aporte!
Muchas gracias por tu aporte, muy bien estructurado.
Es importante tomar en cuenta que cuando se va a utilizar la metodología BEM no se "debería" utilizar etiquetas, BEM es para trabajar únicamente con clases y separar completamente el HTML del CSS para que puda ser reutilizado.
Cuando el profesor colocó** .main-nav__item a{
}**
Realmente no aplicó BEM, con BEM la etiqueta a debería haber tenido su propia clase (EN BEM TODOS LOS ELEMENTOS DEBEN CONTAR CON CLASE, PREFERENTEMENTE)
Gracias por el aporte!
En ese caso, para que fuese acorde a la metodologia, a la etiqueta a ¿le colocariamos una clase tambien?, de manera que al momento de llamarlo en CSS lo hicieramos a través de la clase directamente. ¿es correcto?
Está genial!! gracias! Me gusta mucho también el diseño de la página :D!
Excelente documentación compañero.
 hacer clic con la rueda de desplazamiento del mouse y hacer scroll hasta donde desees (en este caso, al ultimo <li>) de esa forma podrán escribir en las 4 líneas de código al mismo tiempo.
Excelentisimo aporte Cesar, muchas gracias👍
Hola! estoy teniendo un problema con este profesor, no es la primera vez que me doy cuenta de como utilizar lo que dicta en la clase ( en este caso pseudo clases y pseudo elementos) y aplicarlo pero no logro entender que es cada cosa. Por ejemplo tengo hecho un formulario haciendo uso de pseudo clases hasta ahí todo excelente pero quiero hacer apuntes en mi cuaderno y no logro encontrar en esta clase la explicación exacta de que es una pseudo clase y que es un pseudo elemento. Hace casi un mes estoy con este curso por la misma razón, me pierdo y tengo que empezar TODO EL CURSO DE NUEVO es como que el profesor dice: Hoy vamos a dar pseudo clases y pseudo elementos, empieza a hacer código y listo ya tienes que es una pseudo clase y pseudo elemento. Como que tengo que andar adivinando para que sirve cada cosa o andar buscando en otros portales.
Realmente me desmotiva :(
No te preocupes, a mucha gente le pasa los mismo en este y otros cursos, en mi caso yo comence la escuela de js, y ya en el curso de frontend prácticamente copiabas los que la profesora hacia y solo te mareaba aun mas, yo hice una pregunta similar a la tuya y me recomendaron este curso antes del otro, el problema es que son todos iguales van muy rapido y muchas veces pierden el hilo de las clases, y terminas investigando por fuera ya sea en youtube o google, yo ya estoy a punto de suspender platzi, no es la primera vez que me pasa eso con un curso y es frustrante mas que ayudar lo que hacen es generar frustracion en la persona, no te rindas, te recomiendo que investigues por tu cuenta, en youtube o google o incluso otra academia online.
te puedo decir que te relajes, busca en otros lugares Tambien es muy recomendado, y hay cosas que como profesional ya tienes el vicio o lo conoces muy bien por eso obvias la información, busca comunidades que te ayuden a entender las cosas que preguntas, o pregunta en los comentarios sobre lo que tengas dudas,
yo termine un curso de45 horas de paginas web y te juro que esta mejor explicado aquí en 7 horas.
aparte no comprenderás todo en u totalidad en solo 7 horas son conocimientos que se necesitan practicar, y poder interiorizar para poder dominar, solo continua practicando y lo lograras :)
Puede en ocaciones pasar eso, pero recuerda que en esta comunidad estamos para ayudarnos y siempre habrá alguien dispuesto a complementar la clase 😁👍
/* Usamos las clases */.main-nav{ margin-top:10px;/* Espaciado exterior superior */ list-style: none;/* Le quitamos los estilos a la lista */ padding-left:10px;/* Espaciado interno izquierdo */ background-color: #13a4a4;/* Color de fondo para el elemento */}.main-nav_item{display: inline-block;/* Hacemos que pasen de vertical a horizontal */}.main-nav_item a{/* Modificamos todos las etiquetas <a> que esten dentro de la clase especificada */color: #FFFFFF;/* Cambiamos el color de la letra a blanco */padding: 5px;/* Hacemos un espaciado interior general(superior, inferior, derecho y izquierdo) de 5 pixeles */ border-radius: 2px;/* Hacemos un borde redondeando de 2 pixeles al elemento */ text-decoration: none;/* Le quitamos las decoraciones al texto de la etiqueta <a> */}.main-nav_item a:hover{/* Con etiqueta:hover hacemos que cada vez que el usuario pase el cursor
por el elemento se le apliquen los siguientes estilos CSS */color: #0000FF;/* Hacemos que el color de la fuente sea de color azul */}.main-nav_item a:active{/* Con etiqueta:active hacemos que cada vez que el usuario haga click sobre el elemento
se le apliquen los siguientes estilos CSS */color: #FF0000;/* Hacemps que el color de la fuente sea de color azul */}/* Pseudo clases y Pseudo elementos */.main-nav_item a::after{/* Con after agregamos cierto contenido despues de la etiqueta especificada */content:" | ";/* con content : "contenido" agregamos el contenido que queremos mostrar */}```
Excellent summary!
Buen aporte
No se ustedes, pero este curso me parece demasiado superficial. No hemos terminado ni ver HTML y ya incluyen CSS.
(Extrañamos a Fredy de profesor!, este man no deja ni apuntes.)
Les recomiendo estudiar por su parte HTML y CSS y luego volver a pasar por aqui, yo lo hice en w3 school. Les dejo el link!
No creo que introducir CSS en esta etapa haya sido el problema (en realidad, muchos cursos básicos de HTML y CSS me desesperaban un poco por introducir demasiado tarde CSS para mí gusto nwnU), sino que asume que ya sabes algunas cosas cuando la misma descripción del curso te dice que aprendes desde cero, y no hablo precisamente de lo que se supone que ves en el prework. Por ejemplo, mencionó muy por encima lo que es comentar un código tanto en CSS como en HTML; yo sabía lo que era comentar un código, pero me extrañó que no lo comentara a detalle y fuera más un momento "blink-and-miss" para algo tan importante, para lo que de hecho bien podría haberse hecho un video completo de 2:00 minutos explicando porqué es tan importante comentar el código (y diferenciarlo de CSS y HTML).
En sí, no creo que sea un mal profe, pero aunque definitivamente no dudo de sus conocimientos creo que su nivel de experticia le hace olvidar cómo alguien que a penas va a aprendiendo le hace falta que le expliquen hasta las cosas más básicas. Esto es particularmente más notorio cuando dice "haz esto y luego te lo explico". Confunde mucho, sobre todo para alguien sin bases que podría encontrarlo algo intimidante. No dudo de que sea un excelente profesional, pero definitivamente como profesor le falta aún mucho por delante.
Saludos!
Puede ser que hay una mala planeación del curso, al ir en desorde, un tema acá, otro por allá, queda todo como segmentado. Platzi debería mejorar. A la gente que viene de cero le puede costar ucho entender.
Se debería explicar primero el modelo de caja
Completamente de acuerdo. En general todo este curso está explicado incompleto en desorden y por grageas.
Pseudo clases & Pseudo elementos
¿Qué son? 🤔
Dentro del css, se podrían categorizar como selectores, nos permiten:
Acceder a elementos que los selectores básicos no nos permiten acceder.
Permiten aplicar estilos a elementos no solo en función del DOM, sino también a factores externos como el historial de visitas. (tener en cuenta la pseudo clase :visited).
Pseudo Elementos ::
Los Pseudo-elementos se utilizan para seleccionar una parte de alguna estructura HTML, por ejemplo:
p::first-letter Selecciona la primera letra de un párrafo (No solamente de un párrafo.
elemento:beforeCrear un elementos antes del contenido del elementohtml con afterse crear después del contenido.
Pseudo Clases :
Las Pseudo-clases se utilizan para seleccionar un elemento en un determinado estado, por ejemplo:
:active Estado que se activa cuando el puntero del mouse pasa por encima del elemento.
:focus pseudo-clase activada cuando un campo de formulario o elemento html tiene el foco del mouse (esta seleccionado o se este escribiendo en dicho elemento)