|
/* |
|
* Estilos para la Guía Práctica de CSS para Principiantes |
|
* Archivo: styles.css |
|
* Contiene todos los estilos para la presentación de la guía |
|
* y los estilos de ejemplo para cada sección. |
|
*/ |
|
|
|
/* Definición de Variables CSS (Propiedades Personalizadas) - Punto 11 */ |
|
:root { |
|
--color-principal: #3498db; /* Azul */ |
|
--color-secundario: #2ecc71; /* Verde */ |
|
--color-resaltado: #f39c12; /* Naranja/Amarillo */ |
|
--color-fondo-guia: #f4f7f6; |
|
--color-fondo-seccion: white; |
|
--color-texto-oscuro: #333; |
|
--color-texto-claro: #f8f8f2; |
|
--color-codigo-fondo: #272822; /* Fondo oscuro para código */ |
|
--sombra-ligera: 0 2px 4px rgba(0,0,0,0.1); |
|
--sombra-media: 0 4px 8px rgba(0,0,0,0.08); |
|
--espaciado-base: 15px; |
|
--espaciado-seccion: 30px; |
|
} |
|
|
|
|
|
/* Estilos generales para el cuerpo y la estructura de la guía */ |
|
body { |
|
font-family: Arial, sans-serif; |
|
line-height: 1.6; |
|
margin: 0; /* Reset margin */ |
|
padding: var(--espaciado-base); |
|
background-color: var(--color-fondo-guia); |
|
color: var(--color-texto-oscuro); |
|
display: flex; |
|
flex-direction: column; |
|
align-items: center; /* Centrar horizontalmente el contenido del body */ |
|
} |
|
|
|
.container { |
|
max-width: 800px; /* Ancho máximo para el contenido principal */ |
|
width: 100%; |
|
/* Asegura que el margen/padding no afecte el ancho total en pantallas pequeñas */ |
|
box-sizing: border-box; |
|
} |
|
|
|
h1, h2 { |
|
color: var(--color-texto-oscuro); |
|
margin-top: 0; /* Eliminar margen superior por defecto */ |
|
} |
|
h1 { |
|
text-align: center; |
|
margin-bottom: 40px; |
|
color: var(--color-principal); /* Usando un color destacado de variable */ |
|
} |
|
h2 { |
|
margin-bottom: var(--espaciado-base); |
|
padding-bottom: 5px; |
|
border-bottom: 2px solid #eee; |
|
color: var(--color-principal); /* Títulos de sección con color principal */ |
|
} |
|
|
|
section { |
|
background: var(--color-fondo-seccion); |
|
padding: var(--espaciado-base); |
|
margin-bottom: var(--espaciado-seccion); |
|
border-radius: 8px; |
|
box-shadow: var(--sombra-media); /* Sombra definida por variable */ |
|
border-left: 5px solid var(--color-principal); /* Línea de color de variable */ |
|
} |
|
|
|
pre { |
|
background: var(--color-codigo-fondo); |
|
color: var(--color-texto-claro); |
|
padding: var(--espaciado-base); |
|
border-radius: 5px; |
|
overflow-x: auto; /* Desplazamiento horizontal si el código es muy largo */ |
|
font-size: 0.9em; |
|
line-height: 1.4; |
|
margin-top: var(--espaciado-base); /* Espacio arriba del bloque de código */ |
|
white-space: pre-wrap; /* CSS3 */ |
|
white-space: -moz-pre-wrap; /* Firefox */ |
|
white-space: -pre-wrap; /* Opera 7 */ |
|
white-space: -o-pre-wrap; /* Opera 4-6 */ |
|
word-wrap: break-word; /* IE */ |
|
} |
|
|
|
code { |
|
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; /* Fuentes monoespaciadas */ |
|
} |
|
|
|
.code-block-title { |
|
font-weight: bold; |
|
margin-top: 20px; |
|
margin-bottom: 5px; |
|
color: #555; /* Un color para los títulos de bloque de código */ |
|
font-size: 0.95em; |
|
} |
|
|
|
|
|
.example-box { |
|
background: #ecf0f1; /* Fondo claro para ejemplos */ |
|
padding: var(--espaciado-base); |
|
margin: var(--espaciado-base) 0; /* Espacio arriba y abajo */ |
|
border-radius: 5px; |
|
border: 1px solid #bdc3c7; |
|
} |
|
|
|
.btn-download { |
|
display: block; |
|
width: 250px; |
|
margin: 40px auto; |
|
padding: var(--espaciado-base) 25px; |
|
background-color: var(--color-secundario); /* Color verde de variable */ |
|
color: white; |
|
text-align: center; |
|
font-weight: bold; |
|
border-radius: 6px; |
|
text-decoration: none; |
|
box-shadow: 0 3px 6px rgba(0,0,0,0.15); |
|
transition: background-color 0.3s ease; |
|
} |
|
|
|
.btn-download:hover { |
|
background-color: #27ae60; /* Verde más oscuro al pasar el mouse */ |
|
} |
|
|
|
/* --- Estilos Específicos para los Ejemplos (corresponden a cada sección) --- */ |
|
|
|
/* Punto 2: Selectores */ |
|
#principal { |
|
font-weight: bold; |
|
color: blue; |
|
} |
|
.resaltado { |
|
background-color: yellow; |
|
} |
|
|
|
/* Punto 3: Unidades de Medida */ |
|
.text-rem { |
|
font-size: 2rem; /* 2 veces el tamaño de fuente raíz */ |
|
} |
|
.box-vw-vh { |
|
width: 50vw; /* 50% del ancho de la ventana */ |
|
height: 20vh; /* 20% del alto de la ventana */ |
|
background-color: lightblue; |
|
border-radius: 6px; |
|
text-align: center; |
|
/* line-height para centrar texto verticalmente en este caso (igual al height) */ |
|
line-height: 20vh; |
|
box-sizing: border-box; /* Incluir padding y border en width/height */ |
|
padding: 5px; /* Pequeño padding para que el texto no toque los bordes */ |
|
} |
|
|
|
|
|
/* Punto 4: Margen y padding */ |
|
.caja { |
|
background-color: lightgreen; |
|
margin: 20px; |
|
padding: 15px; |
|
border: 2px solid green; |
|
} |
|
|
|
/* Punto 5: Fondos */ |
|
.fondo { |
|
width: 300px; |
|
height: 200px; |
|
background-image: url('https://via.placeholder.com/300x200/aaddff/000000?text=Fondo+Ejemplo'); /* Usando un placeholder con texto */ |
|
background-size: cover; |
|
background-position: center; |
|
border-radius: 6px; |
|
margin: 10px auto; /* Centrar el div si su contenedor es más ancho */ |
|
border: 1px solid #ccc; |
|
} |
|
|
|
/* Punto 6: Posicionamiento */ |
|
.contenedor { |
|
position: relative; |
|
width: 300px; |
|
height: 150px; |
|
background: #eee; |
|
margin: 15px auto; /* Centrar */ |
|
border-radius: 6px; |
|
border: 1px solid #ccc; |
|
overflow: hidden; /* Ocultar cualquier cosa que se salga (útil en relative) */ |
|
} |
|
.absoluto { |
|
position: absolute; |
|
top: 10px; |
|
right: 10px; |
|
background: coral; |
|
padding: 5px; |
|
border-radius: 4px; |
|
color: white; |
|
font-weight: bold; |
|
font-size: 0.9em; |
|
} |
|
|
|
/* Punto 7: Flexbox */ |
|
.flex-container { |
|
display: flex; |
|
justify-content: space-around; /* Espacio alrededor de los ítems */ |
|
align-items: center; /* Centrar ítems verticalmente en el cross-axis */ |
|
background-color: #ddd; |
|
padding: 10px; |
|
border-radius: 6px; |
|
margin: 15px 0; |
|
flex-wrap: wrap; /* Permitir que los ítems salten de línea en pantallas pequeñas */ |
|
} |
|
.flex-container > div { |
|
background-color: #aaa; |
|
padding: 15px; /* Reducir padding un poco */ |
|
border-radius: 4px; |
|
color: white; |
|
font-weight: bold; |
|
margin: 5px; /* Añadir un pequeño margen a los ítems */ |
|
min-width: 80px; /* Ancho mínimo para evitar que se aplasten demasiado */ |
|
text-align: center; |
|
} |
|
|
|
/* Punto 8: Grid */ |
|
.grid-container { |
|
display: grid; |
|
/* 3 columnas de igual tamaño flexible */ |
|
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); /* Responsive grid */ |
|
gap: 10px; /* Espacio entre celdas */ |
|
margin: 15px 0; |
|
} |
|
.grid-container > div { |
|
background-color: #8bc34a; |
|
padding: 20px; |
|
text-align: center; |
|
border-radius: 6px; |
|
color: white; |
|
font-weight: bold; |
|
} |
|
|
|
/* Punto 9: Pseudoclases y pseudoelementos */ |
|
.link-example { /* Usar una clase diferente para evitar conflictos */ |
|
text-decoration: none; |
|
color: var(--color-principal); /* Usando variable */ |
|
font-weight: bold; |
|
transition: color 0.3s ease; /* Transición para el hover */ |
|
} |
|
.link-example:hover { |
|
color: red; /* Cambia a rojo al pasar el mouse */ |
|
text-decoration: underline; /* Opcional: subrayar al pasar el mouse */ |
|
} |
|
.link-example::before { |
|
content: "👉 "; /* Inserta un icono/texto antes del contenido */ |
|
font-size: 0.9em; /* Hacer el icono un poco más pequeño */ |
|
} |
|
|
|
/* Punto 10: Animaciones y transiciones */ |
|
.btn-transition { /* Usar una clase diferente */ |
|
background-color: var(--color-principal); /* Usando variable */ |
|
color: white; |
|
padding: 12px 24px; |
|
border: none; |
|
border-radius: 6px; |
|
cursor: pointer; |
|
transition: background-color 0.3s ease, transform 0.1s ease, box-shadow 0.3s ease; /* Transición en background, transform y shadow */ |
|
font-size: 1rem; |
|
margin-top: 10px; |
|
display: inline-block; |
|
font-weight: bold; |
|
box-shadow: var(--sombra-ligera); /* Sombra suave por defecto */ |
|
} |
|
.btn-transition:hover { |
|
background-color: #2980b9; /* Azul más oscuro al pasar el mouse */ |
|
transform: translateY(-2px); /* Pequeño desplazamiento hacia arriba */ |
|
box-shadow: 0 4px 8px rgba(0,0,0,0.2); /* Sombra al pasar el mouse */ |
|
} |
|
.btn-transition:active { |
|
background-color: #1f618d; /* Azul aún más oscuro al hacer click */ |
|
transform: translateY(0); /* Vuelve a la posición original */ |
|
box-shadow: 0 2px 4px rgba(0,0,0,0.2); /* Sombra menor al hacer click */ |
|
} |
|
|
|
|
|
/* Punto 11: Variables CSS (Estilos que USAN las variables) */ |
|
.uses-variable { |
|
color: var(--color-principal, steelblue); /* Usa la variable, con fallback */ |
|
border: 1px solid var(--color-principal, steelblue); |
|
padding: 10px; |
|
margin: 10px 0; |
|
border-radius: 4px; |
|
display: inline-block; /* Para que se vea la caja */ |
|
box-shadow: var(--sombra-ligera); /* Usando otra variable para la sombra */ |
|
} |
|
|
|
|
|
/* Punto 12: Accesibilidad (Ejemplos de estilos accesibles) */ |
|
/* Asegurar buen contraste y texto escalable en el cuerpo (ya en estilos generales, pero se puede enfatizar) */ |
|
/* body { |
|
background-color: white; |
|
color: #222; |
|
font-size: 1rem; |
|
line-height: 1.5; |
|
} */ |
|
|
|
/* Indicador de foco visible para accesibilidad con teclado */ |
|
button:focus, |
|
a:focus, |
|
input:focus, |
|
select:focus, |
|
textarea:focus { |
|
outline: 2px solid blue; /* Un contorno azul claro es común y visible */ |
|
outline-offset: 2px; /* Separa el contorno del borde del elemento */ |
|
} |
|
|
|
/* Ejemplo de no depender solo del color */ |
|
.error-message { |
|
color: #e74c3c; /* Color para indicar error (usando variable o valor directo) */ |
|
font-weight: bold; /* Usar negrita además del color */ |
|
/* Puedes añadir un icono con ::before o texto adicional */ |
|
} |
|
.success-message { |
|
color: var(--color-secundario); /* Color para éxito */ |
|
font-weight: bold; |
|
} |
|
|
|
|
|
/* Punto 13: Organización BEM */ |
|
.card { |
|
padding: var(--espaciado-base); |
|
border: 1px solid #ccc; |
|
border-radius: 6px; |
|
margin-bottom: var(--espaciado-base); |
|
background-color: #fff; /* Fondo blanco por defecto */ |
|
box-shadow: var(--sombra-ligera); /* Sombra ligera */ |
|
} |
|
.card--highlighted { /* Modificador */ |
|
border-color: var(--color-resaltado); /* Borde naranja de variable */ |
|
background-color: #fcf8e3; /* Fondo amarillo claro */ |
|
box-shadow: var(--sombra-media); /* Sombra media */ |
|
} |
|
.card__title { /* Elemento */ |
|
font-weight: bold; |
|
margin-top: 0; |
|
margin-bottom: 8px; |
|
color: var(--color-texto-oscuro); |
|
} |
|
.card__description { /* Elemento */ |
|
font-size: 0.95em; |
|
color: #555; |
|
margin-bottom: 0; |
|
} |