{"id":73,"date":"2025-05-01T09:13:43","date_gmt":"2025-05-01T13:13:43","guid":{"rendered":"https:\/\/juredev.com\/blog\/?p=73"},"modified":"2025-05-01T09:25:20","modified_gmt":"2025-05-01T13:25:20","slug":"estudiando-estilos-introduccion-a-css-con-ejemplos","status":"publish","type":"post","link":"https:\/\/juredev.com\/blog\/2025\/05\/estudiando-estilos-introduccion-a-css-con-ejemplos\/","title":{"rendered":"Estudiando Estilos: Introducci\u00f3n a CSS con Ejemplos"},"content":{"rendered":"\n<p>\u00a1Bienvenido al mundo del dise\u00f1o web! Si ya sabes un poco sobre <strong>HTML<\/strong> y c\u00f3mo usar etiquetas para estructurar una p\u00e1gina, ahora es el momento de darle vida con <strong>CSS <\/strong>(Cascading Style Sheets). <strong>CSS<\/strong> es el lenguaje que transforma una p\u00e1gina b\u00e1sica en algo visualmente atractivo, controlando colores, fuentes, espaciado, disposici\u00f3n y mucho m\u00e1s. Con <strong>CSS<\/strong>, puedes hacer que tu sitio se vea moderno, organizado y adaptable a cualquier pantalla.<\/p>\n\n\n\n<p>En esta gu\u00eda pr\u00e1ctica, te llevaremos de la mano a trav\u00e9s de los conceptos esenciales de <strong>CSS <\/strong>con ejemplos claros que puedes probar t\u00fa mismo. No necesitas ser un experto: esta gu\u00eda est\u00e1 dise\u00f1ada para principiantes que quieren empezar a estilizar sus p\u00e1ginas web. \u00a1Prep\u00e1rate para darle un toque \u00fanico a tu <strong>HTML<\/strong>!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. C\u00f3mo Vincular CSS a HTML<\/h2>\n\n\n\n<p>Para que tus estilos <strong>CSS<\/strong> se apliquen a una p\u00e1gina <strong>HTML<\/strong>, necesitas conectar el c\u00f3digo <strong>CSS <\/strong>con tu archivo <strong>HTML<\/strong>. La forma m\u00e1s pr\u00e1ctica y recomendada es crear un archivo separado con extensi\u00f3n .css (por ejemplo, styles.css) y vincularlo al HTML usando la etiqueta <code>&lt;link><\/code> dentro de la secci\u00f3n <code>&lt;head><\/code>. Esto mantiene tu c\u00f3digo limpio, organizado y f\u00e1cil de mantener, especialmente en proyectos m\u00e1s grandes.<\/p>\n\n\n\n<p>En esta gu\u00eda, todos los ejemplos usan un archivo externo styles.css para mostrarte la mejor pr\u00e1ctica desde el principio.<\/p>\n\n\n\n<p>Para los ejemplos de esta gu\u00eda, hemos puesto todo el <strong>CSS <\/strong>en un archivo externo llamado <code>styles.css<\/code> y lo enlazamos a esta p\u00e1gina para mostrar la mejor pr\u00e1ctica.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo funciona?<\/h3>\n\n\n\n<p>Aqu\u00ed ver\u00edas un t\u00edtulo centrado y en color rojo, estilizado por el CSS vinculado, si pruebas el c\u00f3digo en tu navegador:<\/p>\n\n\n\n<p>HTML:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html>\n&lt;html lang=\"es\">\n&lt;head>\n  &lt;meta charset=\"UTF-8\">\n  &lt;title>Ejemplo Vinculaci\u00f3n CSS&lt;\/title>\n  &lt;link rel=\"stylesheet\" href=\"styles.css\">\n&lt;\/head>\n&lt;body>\n  &lt;h1>Hola, este t\u00edtulo tiene estilo gracias a CSS!&lt;\/h1>\n&lt;\/body>\n&lt;\/html><\/code><\/pre>\n\n\n\n<p>CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>h1 {\n  color: red; \/* Cambia el color del texto a rojo *\/\n  text-align: center; \/* Centra el texto *\/\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">2. Selectores B\u00e1sicos: ID y Clase<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo funcionan?<\/h3>\n\n\n\n<p>Los selectores son la forma en que \u00abapuntas\u00bb a los elementos HTML que quieres estilizar. Los dos selectores m\u00e1s comunes son <strong>ID<\/strong> y <strong>Clase<\/strong>, y cada uno tiene su propio prop\u00f3sito:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Selector por ID (<code>#<\/code>):<\/strong> Usa <code>#<\/code> seguido del valor del atributo id para estilizar un elemento \u00fanico en la p\u00e1gina. Un id debe ser \u00fanico en todo el documento, como un nombre exclusivo para un elemento especial.<\/li>\n\n\n\n<li><strong>Selector por Clase (<code>.<\/code>):<\/strong> Usa <code>.<\/code> seguido del valor del atributo <code>class<\/code> para aplicar estilos a uno o m\u00e1s elementos que comparten la misma clase. Es ideal para grupos de elementos que quieres estilizar de forma similar.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3digo para probar:<\/h3>\n\n\n\n<p>Aqu\u00ed ver\u00edas un <code>div<\/code> con texto azul en negrita y dos p\u00e1rrafos con fondo amarillo, mostrando c\u00f3mo los selectores afectan elementos espec\u00edficos:<\/p>\n\n\n\n<p>HTML:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div id=\"principal\">Este es un div con ID&lt;\/div>\n&lt;p class=\"resaltado\">P\u00e1rrafo resaltado 1&lt;\/p>\n&lt;p class=\"resaltado\">P\u00e1rrafo resaltado 2&lt;\/p><\/code><\/pre>\n\n\n\n<p>CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#principal {\n  font-weight: bold; \/* Texto en negrita *\/\n  color: blue; \/* Color azul *\/\n}\n.resaltado {\n  background-color: yellow; \/* Fondo amarillo *\/\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3. Unidades de Medida y Dise\u00f1o Responsivo<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo funcionan?<\/h3>\n\n\n\n<p>En CSS, las unidades de medida definen tama\u00f1os, espaciados y otras dimensiones. Hay dos tipos principales: unidades absolutas (como <code>px<\/code>, que tienen un tama\u00f1o fijo) y unidades relativas (que dependen de otros valores, como el tama\u00f1o de la pantalla o la fuente).<\/p>\n\n\n\n<p>Para crear sitios web que se vean bien en cualquier dispositivo (lo que llamamos dise\u00f1o <strong>responsivo<\/strong>), las unidades relativas son tus mejores amigas. Algunas de las m\u00e1s \u00fatiles son:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>em<\/code>: Relativa al tama\u00f1o de fuente del elemento padre.<\/li>\n\n\n\n<li><code>rem<\/code>: Relativa al tama\u00f1o de fuente del elemento ra\u00edz (<code>&lt;html><\/code>). M\u00e1s predecible que <code>em<\/code>.<\/li>\n\n\n\n<li><code>%<\/code>: Relativa al tama\u00f1o del contenedor padre.<\/li>\n\n\n\n<li><code>vw<\/code>: Porcentaje del <strong>ancho<\/strong> total de la ventana del navegador (viewport width). <code>100vw<\/code> es el 100% del ancho.<\/li>\n\n\n\n<li><code>vh<\/code>: Porcentaje del <strong>alto<\/strong> total de la ventana del navegador (viewport height). <code>100vh<\/code> es el 100% del alto.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplo en acci\u00f3n:<\/h3>\n\n\n\n<p>Aqu\u00ed ver\u00edas un texto grande con <code>2rem<\/code> y una caja que ocupa el 50% del ancho y el 20% del alto de la ventana, ajust\u00e1ndose si cambias el tama\u00f1o del navegador.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3digo para probar:<\/h3>\n\n\n\n<p>HTML:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p class=\"text-rem\">Texto con tama\u00f1o relativo (2rem)&lt;\/p>\n&lt;div class=\"box-vw-vh\">\n  Caja con tama\u00f1o relativo a la ventana (50vw x 20vh)\n&lt;\/div><\/code><\/pre>\n\n\n\n<p>CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.text-rem {\n  font-size: 2rem; \/* 2 veces el tama\u00f1o de fuente ra\u00edz *\/\n}\n.box-vw-vh {\n  width: 50vw; \/* 50% del ancho de la ventana *\/\n  height: 20vh; \/* 20% del alto de la ventana *\/\n  background-color: lightblue; \/* Fondo azul claro *\/\n  border-radius: 6px; \/* Bordes redondeados *\/\n  text-align: center; \/* Texto centrado *\/\n  line-height: 20vh; \/* Centra el texto verticalmente *\/\n  box-sizing: border-box; \/* Incluye padding\/borde en el tama\u00f1o *\/\n  padding: 5px; \/* Espacio interno *\/\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4. Margen y Relleno (Box Model)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo funciona?<\/h3>\n\n\n\n<p>En <strong>CSS<\/strong>, cada elemento <strong>HTML <\/strong>se comporta como una caja, y el Box Model es el concepto que explica c\u00f3mo se estructura esa caja. Tiene cuatro partes, de adentro hacia afuera:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Content (Contenido):<\/strong> El contenido real del elemento (texto, im\u00e1genes, etc.).<\/li>\n\n\n\n<li><strong>Padding (Relleno):<\/strong> El espacio <em>dentro<\/em> del borde, entre el contenido y el borde. Se usa para crear \u00abaire\u00bb alrededor del contenido interno.<\/li>\n\n\n\n<li><strong>Border (Borde):<\/strong> La l\u00ednea que rodea el padding y el contenido. Puedes controlar su estilo, grosor y color.<\/li>\n\n\n\n<li><strong>Margin (Margen):<\/strong> El espacio <em>fuera<\/em> del borde, entre el borde de un elemento y otros elementos cercanos. Se usa para separar elementos entre s\u00ed.<\/li>\n<\/ul>\n\n\n\n<p>Con las propiedades <code>margin<\/code> y <code>padding<\/code>, puedes controlar estos espacios para que tus elementos se vean bien organizados.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplo en acci\u00f3n:<\/h3>\n\n\n\n<p>Aqu\u00ed ver\u00edas una caja verde con un borde, espacio interno (<code>padding<\/code>) que separa el texto del borde, y espacio externo (<code>margin<\/code>) que la aleja de otros elementos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3digo para probar:<\/h3>\n\n\n\n<p>HTML:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"caja\">Caja con margen y padding&lt;\/div><\/code><\/pre>\n\n\n\n<p>CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.caja {\n  background-color: lightgreen; \/* Fondo verde claro *\/\n  margin: 20px; \/* 20px de espacio externo alrededor *\/\n  padding: 15px; \/* 15px de espacio interno *\/\n  border: 2px solid green; \/* Borde verde de 2px *\/\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">5. Fondos y Estilos B\u00e1sicos<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo funciona?<\/h3>\n\n\n\n<p>Con <strong>CSS<\/strong>, puedes hacer que tus elementos destaquen a\u00f1adiendo fondos atractivos. Puedes usar colores s\u00f3lidos, im\u00e1genes o incluso gradientes para darles personalidad. Las propiedades de fondo te permiten controlar c\u00f3mo se ven y se ajustan estos estilos, haciendo que tus p\u00e1ginas sean m\u00e1s interesantes visualmente.<\/p>\n\n\n\n<p>Algunas propiedades clave son:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>background-image: url('...')<\/code>: Define la imagen a usar.<\/li>\n\n\n\n<li><code>background-size: cover;<\/code>: Escala la imagen para que cubra todo el \u00e1rea del elemento, recortando si es necesario para evitar distorsi\u00f3n.<\/li>\n\n\n\n<li>`background-size: contain;`: Escala la imagen para que encaje completamente dentro del elemento, sin recortarse, manteniendo sus proporciones. Puede dejar espacio vac\u00edo.<\/li>\n\n\n\n<li><code>background-position: center;<\/code>: Centra la imagen dentro del elemento.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplo en acci\u00f3n:<\/h3>\n\n\n\n<p>Aqu\u00ed ver\u00edas una caja con una imagen de fondo que se ajusta perfectamente y se centra, creando un efecto limpio y profesional.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3digo para probar:<\/h3>\n\n\n\n<p>HTML:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"fondo\">&lt;\/div><\/code><\/pre>\n\n\n\n<p>CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.fondo {\n  width: 300px;\n  height: 200px;\n  background-image: url('https:\/\/via.placeholder.com\/300x200\/aaddff\/000000?text=Fondo+Ejemplo');\n  background-size: cover; \/* Cubre todo el \u00e1rea sin distorsionarse *\/\n  background-position: center; \/* Centra la imagen *\/\n  border-radius: 6px; \/* Bordes redondeados *\/\n  margin: 10px auto; \/* Centra la caja horizontalmente *\/\n  border: 1px solid #ccc; \/* Borde sutil *\/\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">6. Posicionamiento de Elementos<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo funciona?<\/h3>\n\n\n\n<p>La propiedad <code>position<\/code> te da el poder de colocar los elementos exactamente donde los quieres en tu p\u00e1gina, incluso fuera del flujo normal del dise\u00f1o. Esto es \u00fatil para crear efectos como men\u00fas fijos, superposiciones o elementos que se mueven con precisi\u00f3n. Los valores principales son:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>static<\/code>: Es el valor por defecto. El elemento sigue el flujo normal del documento (uno tras otro, o seg\u00fan Flexbox\/Grid). Las propiedades <code>top<\/code>, <code>bottom<\/code>, <code>left<\/code>, <code>right<\/code>, y <code>z-index<\/code> <strong>no tienen efecto<\/strong>.<\/li>\n\n\n\n<li><code>relative<\/code>: El elemento se posiciona <em>relativo a su posici\u00f3n original<\/em> en el flujo normal. Puedes usar <code>top<\/code>, <code>bottom<\/code>, <code>left<\/code>, <code>right<\/code> para desplazarlo desde su lugar de origen, pero su espacio original en el layout sigue reservado. Es muy \u00fatil para ser el contenedor de referencia de elementos con <code>position: absolute;<\/code>.<\/li>\n\n\n\n<li><code>absolute<\/code>: El elemento se posiciona <em>relativo a su contenedor posicionado m\u00e1s cercano<\/em> (un ancestro con <code>position<\/code> no <code>static<\/code>, generalmente <code>relative<\/code>). Se saca del flujo normal del documento, y los elementos a su alrededor se comportan como si no existiera.<\/li>\n\n\n\n<li><code>fixed<\/code>: El elemento se posiciona <em>relativo a la ventana del navegador (viewport)<\/em> y permanece fijo en ese lugar incluso cuando haces scroll. Tambi\u00e9n se saca del flujo normal.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplo en acci\u00f3n:<\/h3>\n\n\n\n<p>Aqu\u00ed ver\u00edas una caja gris clara con una caja coral m\u00e1s peque\u00f1a en la esquina superior derecha, posicionada con <code>absolute<\/code> dentro de un contenedor <code>relative<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3digo para probar:<\/h3>\n\n\n\n<p>HTML:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"contenedor\">\n  &lt;div class=\"absoluto\">Posici\u00f3n absoluta&lt;\/div>\n  Este es el contenido del contenedor relativo.\n&lt;\/div><\/code><\/pre>\n\n\n\n<p>CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.contenedor {\n  position: relative; \/* Contenedor de referencia para el elemento absoluto *\/\n  width: 300px;\n  height: 150px;\n  background: #eee; \/* Fondo gris claro *\/\n  margin: 15px auto; \/* Centra horizontalmente *\/\n  border-radius: 6px; \/* Bordes redondeados *\/\n  border: 1px solid #ccc; \/* Borde sutil *\/\n  overflow: hidden; \/* Oculta contenido que se desborde *\/\n}\n\n.absoluto {\n  position: absolute; \/* Se posiciona respecto al contenedor relativo *\/\n  top: 10px; \/* 10px desde el borde superior *\/\n  right: 10px; \/* 10px desde el borde derecho *\/\n  background: coral; \/* Fondo coral *\/\n  padding: 5px; \/* Espacio interno *\/\n  border-radius: 4px; \/* Bordes redondeados *\/\n  color: white; \/* Texto blanco *\/\n  font-weight: bold; \/* Texto en negrita *\/\n  font-size: 0.9em; \/* Tama\u00f1o de fuente ligeramente menor *\/\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">7. Layouts Modernos con Flexbox<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo funciona?<\/h3>\n\n\n\n<p>Olv\u00eddate de los trucos complicados del pasado: <strong>Flexbox<\/strong> (Flexible Box Layout) hace que alinear y distribuir elementos sea s\u00faper sencillo. Es un sistema de dise\u00f1o unidimensional, perfecto para organizar elementos en filas o columnas, como barras de navegaci\u00f3n, tarjetas o formularios. Con <strong>Flexbox<\/strong>, puedes controlar c\u00f3mo se distribuye el espacio y alinear los elementos con facilidad.<\/p>\n\n\n\n<p>Para empezar, aplica <code>display: flex<\/code> al contenedor padre. Luego, las propiedades del contenedor (como <code>justify-content<\/code> o <code>align-items<\/code>) afectan a sus elementos hijos directos, llamados \u00edtems flex.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplo en acci\u00f3n:<\/h3>\n\n\n\n<p>Aqu\u00ed ver\u00edas una caja gris clara con tres cajas grises m\u00e1s oscuras dentro, espaciadas uniformemente y centradas verticalmente, ajust\u00e1ndose si cambias el tama\u00f1o de la ventana.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3digo para probar:<\/h3>\n\n\n\n<p>HTML:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"flex-container\">\n  &lt;div>Item 1&lt;\/div>\n  &lt;div>Item 2&lt;\/div>\n  &lt;div>Item 3&lt;\/div>\n&lt;\/div><\/code><\/pre>\n\n\n\n<p>CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.flex-container {\n  display: flex; \/* Convierte el contenedor en un contenedor flex *\/\n  justify-content: space-around; \/* Distribuye el espacio horizontalmente alrededor de los \u00edtems *\/\n  align-items: center; \/* Centra los \u00edtems verticalmente en el cross-axis *\/\n  background-color: #ddd;\n  padding: 10px;\n  border-radius: 6px;\n  margin: 15px 0;\n  flex-wrap: wrap; \/* Permite que los \u00edtems salten de l\u00ednea si no caben *\/\n}\n.flex-container > div {\n  background-color: #aaa;\n  padding: 15px;\n  border-radius: 4px;\n  color: white;\n  font-weight: bold;\n  margin: 5px; \/* Espacio entre \u00edtems *\/\n  min-width: 80px; \/* Evita que se aplasten demasiado *\/\n  text-align: center;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">8. Layouts Avanzados con CSS Grid<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo funciona?<\/h3>\n\n\n\n<p>Si <strong>Flexbox <\/strong>es ideal para filas o columnas, <strong>CSS Grid<\/strong> es tu herramienta para dise\u00f1os bidimensionales, donde controlas filas y columnas al mismo timepo. <strong>Grid <\/strong>es perfecto para crear estructuras completas de una p\u00e1gina, como combinar una cabecera, barra lateral, contenido principal y pie de p\u00e1gina en una cuadr\u00edcula limpia.<\/p>\n\n\n\n<p>Para usar <strong>Grid<\/strong>, estableces <code>display: grid;<\/code> en el contenedor padre. Luego defines las columnas (<code>grid-template-columns<\/code>) y filas (<code>grid-template-rows<\/code>) de la cuadr\u00edcula en el <strong>contenedor grid<\/strong>. Los elementos hijos directos se convierten en <strong>\u00edtems grid<\/strong> y se colocan autom\u00e1ticamente en la cuadr\u00edcula o puedes controlarlo manualmente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplo en acci\u00f3n:<\/h3>\n\n\n\n<p>Aqu\u00ed ver\u00edas una cuadr\u00edcula con celdas organizadas en filas y columnas, con elementos numerados que se ajustan din\u00e1micamente al tama\u00f1o de la pantalla.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3digo para probar:<\/h3>\n\n\n\n<p>HTML:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"grid-container\">\n  &lt;div>1&lt;\/div>\n  &lt;div>2&lt;\/div>\n  &lt;div>3&lt;\/div>\n  &lt;div>4&lt;\/div>\n  &lt;div>5&lt;\/div>\n  &lt;div>6&lt;\/div>\n&lt;\/div><\/code><\/pre>\n\n\n\n<p>CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.grid-container {\n  display: grid; \/* Activa el modelo Grid *\/\n  grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); \/* Columnas din\u00e1micas de al menos 100px *\/\n  gap: 10px; \/* Espacio entre celdas *\/\n  margin: 15px 0; \/* Margen externo *\/\n}\n\n.grid-container > div {\n  background-color: #8bc34a; \/* Fondo verde claro *\/\n  padding: 20px; \/* Espacio interno *\/\n  text-align: center; \/* Texto centrado *\/\n  border-radius: 6px; \/* Bordes redondeados *\/\n  color: white; \/* Texto blanco *\/\n  font-weight: bold; \/* Texto en negrita *\/\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">9. Pseudoclases y Pseudoelementos<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo funcionan?<\/h3>\n\n\n\n<p>Las Pseudoclases y Pseudoelementos te permiten aplicar estilos m\u00e1s all\u00e1 de lo que puedes seleccionar directamente con selectores de etiqueta, <code>clase<\/code> o <code>ID<\/code>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pseudoclases:<\/strong> (Empiezan con <code>:<\/code> un solo dos puntos) Seleccionan elementos bas\u00e1ndose en un <strong>estado<\/strong> (ej: cuando un enlace ha sido visitado <code>:visited<\/code>, cuando se pasa el mouse por encima <code>:hover<\/code>, cuando un input est\u00e1 enfocado <code>:focus<\/code>, o bas\u00e1ndose en su <strong>posici\u00f3n<\/strong> en la estructura (ej: el primer hijo <code>:first-child<\/code>).<\/li>\n\n\n\n<li><strong>Pseudoelementos:<\/strong> (Empiezan con <code>::<\/code> doble dos puntos) Permiten seleccionar y dar estilo a <strong>partes de un elemento<\/strong> que no existen como elementos <strong>HTML <\/strong>propios, o insertar <strong>contenido decorativo<\/strong>. Los m\u00e1s comunes son <code>::before<\/code> (inserta contenido antes del elemento) y <code>::after<\/code> (inserta contenido despu\u00e9s).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplo en acci\u00f3n:<\/h3>\n\n\n\n<p>Aqu\u00ed ver\u00edas un enlace con un emoicon \u00ab\ud83d\udc49\u00bb antes del texto, que cambia de color y se subraya al pasar el mouse, mostrando el efecto din\u00e1mico.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3digo para probar:<\/h3>\n\n\n\n<p>HTML:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;a href=\"#\" class=\"link-example\">Enlace con pseudoclase (:hover) y pseudoelemento (::before)&lt;\/a><\/code><\/pre>\n\n\n\n<p>CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.link-example {\n  text-decoration: none; \/* Quita el subrayado por defecto *\/\n  color: #3498db; \/* Azul inicial *\/\n  font-weight: bold; \/* Texto en negrita *\/\n  transition: color 0.3s ease; \/* Cambio suave de color *\/\n}\n\n.link-example:hover {\n  color: red; \/* Cambia a rojo al pasar el mouse *\/\n  text-decoration: underline; \/* A\u00f1ade subrayado *\/\n}\n\n.link-example::before {\n  content: \"\ud83d\udc49 \"; \/* A\u00f1ade una flecha antes del texto *\/\n  font-size: 0.9em; \/* Ligeramente m\u00e1s peque\u00f1o *\/\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">10. Animaciones y Transiciones<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo funcionan?<\/h3>\n\n\n\n<p>A\u00f1adir movimiento a tus p\u00e1ginas web puede hacerlas m\u00e1s din\u00e1micas y atractivas. <strong>CSS <\/strong>te ofrece dos formas principales de lograrlo: transiciones y animaciones. Ambas son perfectas para mejorar la experiencia del usuario, como resaltar botones al pasar el mouse o crear efectos suaves.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Transiciones:<\/strong> Son la opci\u00f3n m\u00e1s simple. Permiten que una propiedad <strong>CSS <\/strong>(como el color o la posici\u00f3n) cambie suavemente entre dos estados, por ejemplo, al pasar el mouse. T\u00fa defines qu\u00e9 propiedad animar, cu\u00e1nto tiempo dura y c\u00f3mo debe ser el cambio (con la propiedad <code>transition<\/code>).<\/li>\n\n\n\n<li><strong>Animaciones:<\/strong> Son m\u00e1s potentes y te dan control total. Con <code>@keyframes<\/code>, creas una secuencia de estilos en diferentes momentos, y luego aplicas esa secuencia a un elemento con la propiedad <code>animation<\/code>, ajustando duraci\u00f3n, repeticiones y m\u00e1s.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplo en acci\u00f3n:<\/h3>\n\n\n\n<p>Aqu\u00ed ver\u00edas un bot\u00f3n que cambia de color, se eleva ligeramente y ajusta su sombra al pasar el mouse, con transiciones suaves que hacen el efecto m\u00e1s natural.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3digo para probar:<\/h3>\n\n\n\n<p>HTML:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;button class=\"btn-transition\">Bot\u00f3n con transici\u00f3n al pasar el mouse&lt;\/button><\/code><\/pre>\n\n\n\n<p>CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.btn-transition {\n  background-color: #3498db; \/* Azul inicial *\/\n  color: white; \/* Texto blanco *\/\n  padding: 12px 24px; \/* Espacio interno *\/\n  border: none; \/* Sin borde *\/\n  border-radius: 6px; \/* Bordes redondeados *\/\n  cursor: pointer; \/* Cursor de mano al pasar el mouse *\/\n  font-size: 1rem; \/* Tama\u00f1o de fuente *\/\n  margin-top: 10px; \/* Margen superior *\/\n  display: inline-block; \/* Comportamiento como bloque en l\u00ednea *\/\n  font-weight: bold; \/* Texto en negrita *\/\n  box-shadow: 0 2px 4px rgba(0,0,0,0.1); \/* Sombra suave *\/\n  transition: background-color 0.3s ease, transform 0.1s ease, box-shadow 0.3s ease; \/* Transiciones suaves *\/\n}\n\n.btn-transition:hover {\n  background-color: #2980b9; \/* Azul m\u00e1s oscuro *\/\n  transform: translateY(-2px); \/* Se eleva ligeramente *\/\n  box-shadow: 0 4px 8px rgba(0,0,0,0.2); \/* Sombra m\u00e1s intensa *\/\n}\n\n.btn-transition:active {\n  background-color: #1f618d; \/* Azul a\u00fan m\u00e1s oscuro al clic *\/\n  transform: translateY(0); \/* Vuelve a su posici\u00f3n *\/\n  box-shadow: 0 2px 4px rgba(0,0,0,0.2); \/* Sombra reducida *\/\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">11. Variables CSS (Propiedades Personalizadas)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo funcionan?<\/h3>\n\n\n\n<p>Las <strong>variables CSS<\/strong> (o propiedades personalizadas) son como cajas donde guardas valores (colores, tama\u00f1os, espaciados) para reutilizarlos en todo tu c\u00f3digo. Esto hace que tus estilos sean m\u00e1s f\u00e1ciles de mantener y actualizar, especialmente en proyectos grandes. Por ejemplo, si cambias un color en una variable, se actualiza en todos los lugares donde la usas.<\/p>\n\n\n\n<p>Las variables se definen con un nombre que empieza con <code>--<\/code> (por ejemplo, <code>--color-principal<\/code>) y se suelen declarar en el selector <code>:root<\/code> para que est\u00e9n disponibles en toda la p\u00e1gina. Luego, las usas con la funci\u00f3n <code>var(--nombre-variable)<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplo en acci\u00f3n:<\/h3>\n\n\n\n<p>Aqu\u00ed ver\u00edas elementos que comparten el mismo color y sombra definidos en variables, mostrando c\u00f3mo un cambio en la variable afecta todo autom\u00e1ticamente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3digo para probar:<\/h3>\n\n\n\n<p>CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>:root {\n  --color-principal: #e74c3c; \/* Rojo llamativo *\/\n  --espaciado-base: 15px; \/* Espaciado est\u00e1ndar *\/\n  --sombra-ligera: 0 2px 4px rgba(0,0,0,0.1); \/* Sombra suave *\/\n}\n\nh2 {\n  border-bottom: 2px solid var(--color-principal); \/* Borde con el color variable *\/\n}\n\n.uses-variable {\n  color: var(--color-principal); \/* Texto rojo *\n  border: 1px solid var(--color-principal); \/* Borde rojo *\/\n  padding: 10px; \/* Espacio interno *\/\n  margin: 10px 0; \/* Margen externo *\/\n  border-radius: 4px; \/* Bordes redondeados *\/\n  display: inline-block; \/* Comportamiento como bloque en l\u00ednea *\/\n  box-shadow: var(--sombra-ligera); \/* Sombra variable *\/\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">12. Buenas Pr\u00e1cticas de Accesibilidad en CSS<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo funcionan?<\/h3>\n\n\n\n<p>La <strong>accesibilidad web<\/strong> (o <strong>a11y<\/strong>) se trata de crear sitios que todos puedan usar, incluidas personas con discapacidades visuales, auditivas, motoras o cognitivas. <strong>CSS <\/strong>juega un papel clave al garantizar que tus dise\u00f1os sean legibles y navegables para todos. Aqu\u00ed van algunas pr\u00e1cticas esenciales:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Contraste suficiente:<\/strong> Usa colores con suficiente diferencia entre el texto y el fondo para que sean f\u00e1ciles de leer, especialmente para personas con baja visi\u00f3n.<\/li>\n\n\n\n<li><strong>No dependas solo del color:<\/strong> A\u00f1ade texto, iconos o negritas para se\u00f1alar informaci\u00f3n (como errores o \u00e9xitos), no solo colores.<\/li>\n\n\n\n<li><strong>Texto escalable:<\/strong> Usa unidades relativas como <code>rem<\/code> o <code>em<\/code> para que los usuarios puedan ajustar el tama\u00f1o del texto en su navegador.<\/li>\n\n\n\n<li><strong>Foco visible:<\/strong> Aseg\u00farate de que los elementos interactivos (botones, enlaces, formularios) muestren un contorno claro cuando se navegan con el teclado (estado :focus). \u00a1Nunca elimines el outline sin reemplazarlo por otro estilo visible!<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplo en acci\u00f3n:<\/h3>\n\n\n\n<p>Aqu\u00ed ver\u00edas texto con buen contraste, mensajes con negritas adem\u00e1s de colores, y elementos con contornos claros al navegar con la tecla Tab.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3digo para probar:<\/h3>\n\n\n\n<p>HTML:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;button>Bot\u00f3n accesible&lt;\/button>\n&lt;a href=\"#\">Enlace accesible&lt;\/a>\n&lt;p class=\"error-message\">Error: Revisa los datos&lt;\/p>\n&lt;p class=\"success-message\">\u00a1\u00c9xito: Todo correcto!&lt;\/p><\/code><\/pre>\n\n\n\n<p>CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>body {\n  background-color: white; \/* Fondo claro *\/\n  color: #222; \/* Texto oscuro para buen contraste *\/\n  font-size: 1rem; \/* Tama\u00f1o base escalable *\/\n  line-height: 1.5; \/* Mejora la legibilidad *\/\n}\n\nbutton:focus,\na:focus,\ninput:focus,\nselect:focus,\ntextarea:focus {\n  outline: 2px solid blue; \/* Contorno visible al enfocar *\/\n  outline-offset: 2px; \/* Separa el contorno del elemento *\/\n}\n\n.error-message {\n  color: #e74c3c; \/* Rojo para errores *\/\n  font-weight: bold; \/* Negrita para no depender solo del color *\/\n}\n\n.success-message {\n  color: #2ecc71; \/* Verde para \u00e9xito *\/\n  font-weight: bold; \/* Negrita adicional *\/\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">13. Organizaci\u00f3n y Escalabilidad del C\u00f3digo CSS<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo funciona?<\/h3>\n\n\n\n<p>Cuando tus proyectos crecen, mantener el <strong>CSS <\/strong>organizado es clave para que el c\u00f3digo sea f\u00e1cil de entender, modificar y escalar, especialmente si trabajas en equipo. Una forma popular de lograrlo es con la metodolog\u00eda <strong>BEM <\/strong>(Block, Element, Modifier), que usa nombres de clases claros y estructurados:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Block:<\/strong> Una entidad independiente (ej: <code>.card<\/code>, <code>.button<\/code>, <code>.header<\/code>).<\/li>\n\n\n\n<li><strong>Element:<\/strong> Una parte de un Block que no tiene sentido por s\u00ed sola (ej: <code>.card__title<\/code>, <code>.card__description<\/code>, <code>.header__logo<\/code>). Se unen al Block con doble guion bajo (<code>__<\/code>).<\/li>\n\n\n\n<li><strong>Modifier:<\/strong> Una bandera en un Block o Element para cambiar su apariencia o comportamiento (ej: <code>.card--highlighted<\/code>, <code>.button--disabled<\/code>, <code>.header--fixed<\/code>). Se unen al Block o Element con doble guion (<code>--<\/code>).<\/li>\n<\/ul>\n\n\n\n<p><strong>BEM <\/strong>hace que tu <strong>CSS <\/strong>sea predecible y f\u00e1cil de mantener, incluso en proyectos grandes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplo en acci\u00f3n:<\/h3>\n\n\n\n<p>Aqu\u00ed se mostrar\u00edan dos \u00abtarjetas\u00bb (cards), una normal y otra con un estilo \u00abresaltado\u00bb (highlighted), demostrando c\u00f3mo se usan las clases <code>.card<\/code>, <code>.card__title<\/code>, <code>.card__description<\/code> y el modificador <code>.card--highlighted<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3digo para probar:<\/h3>\n\n\n\n<p>HTML:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"card\">\n  &lt;h3 class=\"card__title\">T\u00edtulo de la Tarjeta&lt;\/h3>\n  &lt;p class=\"card__description\">Esta es una descripci\u00f3n corta.&lt;\/p>\n&lt;\/div>\n&lt;div class=\"card card--highlighted\">\n  &lt;h3 class=\"card__title\">T\u00edtulo de la Tarjeta Resaltada&lt;\/h3>\n  &lt;p class=\"card__description\">Descripci\u00f3n de la tarjeta resaltada.&lt;\/p>\n&lt;\/div><\/code><\/pre>\n\n\n\n<p>CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.card {\n  padding: 15px; \/* Espacio interno *\/\n  border: 1px solid #ccc; \/* Borde gris *\/\n  border-radius: 6px; \/* Bordes redondeados *\/\n  margin-bottom: 15px; \/* Espacio entre tarjetas *\/\n  background-color: #fff; \/* Fondo blanco *\/\n  box-shadow: 0 2px 4px rgba(0,0,0,0.1); \/* Sombra suave *\/\n}\n\n.card--highlighted {\n  border-color: #f39c12; \/* Borde naranja *\/\n  background-color: #fcf8e3; \/* Fondo amarillo claro *\/\n  box-shadow: 0 4px 8px rgba(0,0,0,0.08); \/* Sombra m\u00e1s intensa *\/\n}\n\n.card__title {\n  font-weight: bold; \/* Texto en negrita *\/\n  margin-top: 0; \/* Sin margen superior *\/\n  margin-bottom: 8px; \/* Margen inferior *\/\n  color: #2c3e50; \/* Color oscuro *\/\n}\n\n.card__description {\n  font-size: 0.95em; \/* Tama\u00f1o ligeramente menor *\/\n  color: #555; \/* Gris oscuro *\/\n  margin-bottom: 0; \/* Sin margen inferior *\/\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Recursos para la Pr\u00e1ctica y Pr\u00f3ximos Pasos<\/h2>\n\n\n\n<p>Si llegaste hasta ac\u00e1, has cubierto los conceptos esenciales de <strong>CSS <\/strong>para empezar a dar estilo a tus p\u00e1ginas web. Recuerda que la pr\u00e1ctica hace al maestro. Te animo a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Prueba los ejemplos:<\/strong> Explora los archivos <code>index.html<\/code> y <code>styles.css<\/code> de esta gu\u00eda en mi <a href=\"https:\/\/gist.github.com\/jure-ve\/d3418ed90d51ff99a44c1a60cb858ce3\">Gis<\/a>. C\u00f3pialos, \u00e1brelos en tu editor de c\u00f3digo, y c\u00e1mbiales colores, tama\u00f1os o posiciones. \u00a1Juega con ellos y no tengas miedo de romper algo, es parte del aprendizaje!<\/li>\n\n\n\n<li><strong>Modificar los ejemplos:<\/strong> Cambia colores, tama\u00f1os, posiciones. \u00a1Rompe cosas y arr\u00e9glalas! Es la mejor forma de aprender.<\/li>\n\n\n\n<li><strong>Crear tus propios proyectos simples:<\/strong> Intenta replicar el layout de una tarjeta simple, una barra de navegaci\u00f3n o una secci\u00f3n de un sitio web usando Flexbox o Grid.<\/li>\n\n\n\n<li><strong>Explorar recursos adicionales:<\/strong> <strong>CSS <\/strong>es vasto. Aqu\u00ed tienes algunos lugares excelentes para seguir aprendiendo:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/CSS\">MDN Web Docs (Referencia completa de CSS)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.google.com\/search?q=https:\/\/flexboxfroggy.com\/es\/\">Flexbox Froggy (Juego para practicar Flexbox)<\/a><\/li>\n\n\n\n<li> <a href=\"https:\/\/cssgrid.io\/\">CSS Grid.io (Recursos y juego para practicar Grid)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/css-tricks.com\/\">CSS-Tricks (Art\u00edculos y gu\u00edas, muchos en ingl\u00e9s)<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\u00a1No te detengas aqu\u00ed! <strong>CSS<\/strong> es una habilidad fundamental y creativa en el desarrollo web. Sigue practicando, explorando y construyendo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00a1Bienvenido al mundo del dise\u00f1o web! Si ya sabes un poco sobre HTML y c\u00f3mo usar etiquetas para estructurar una p\u00e1gina, ahora es el momento de darle vida con CSS (Cascading Style Sheets). CSS es el lenguaje que transforma una p\u00e1gina b\u00e1sica en algo visualmente atractivo, controlando colores, fuentes, espaciado, disposici\u00f3n y mucho m\u00e1s. Con [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[27,14],"class_list":["post-73","post","type-post","status-publish","format-standard","hentry","category-guia","tag-css","tag-html"],"_links":{"self":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts\/73","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/comments?post=73"}],"version-history":[{"count":0,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts\/73\/revisions"}],"wp:attachment":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/media?parent=73"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/categories?post=73"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/tags?post=73"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}