Skip to content

1. Introducción a CSS

CSS (Cascading Style Sheets - Hojas de Estilo en Cascada) es el lenguaje que se utiliza para dar estilo y diseño visual a las páginas web. Mientras que HTML define la estructura y el contenido, CSS se encarga de la presentación: colores, tipografías, espaciados, posicionamiento y animaciones.

  • Separar contenido de presentación: Mantener el HTML limpio y semántico
  • Reutilización de estilos: Aplicar el mismo diseño a múltiples elementos
  • Mantenimiento eficiente: Cambiar el diseño completo modificando solo CSS
  • Diseño responsivo: Adaptar la apariencia a diferentes dispositivos
  • Mejorar la experiencia de usuario: Crear interfaces atractivas y funcionales
CSS1 (1996) → Propiedades básicas de texto y color
CSS2 (1998) → Posicionamiento y media types
CSS3 (1999+) → Módulos independientes (Flexbox, Grid, Animaciones)
CSS4+ → Nuevas características modulares continuas

Existen tres formas principales de integrar CSS en un documento HTML, cada una con sus ventajas y casos de uso específicos.

Se aplica directamente en el atributo style de un elemento HTML.

<p style="color: blue; font-size: 18px;">
Este texto es azul y de 18 píxeles.
</p>
<div style="background-color: #f0f0f0; padding: 20px; border-radius: 8px;">
Contenedor con estilos inline
</div>

Se define dentro de la etiqueta <style> en el <head> del documento HTML.

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>CSS Interno</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f5f5f5;
margin: 0;
padding: 20px;
}
h1 {
color: #333;
text-align: center;
}
.card {
background: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
</style>
</head>
<body>
<h1>Mi Página</h1>
<div class="card">
<p>Contenido de la tarjeta</p>
</div>
</body>
</html>

3. CSS External (Externo) - ⭐ Recomendado

Section titled “3. CSS External (Externo) - ⭐ Recomendado”

Se crea un archivo .css separado y se vincula al HTML mediante la etiqueta <link>.

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>CSS Externo</title>
<!-- Vinculación del archivo CSS -->
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header class="header">
<h1>Mi Sitio Web</h1>
<nav class="nav">
<a href="#inicio">Inicio</a>
<a href="#servicios">Servicios</a>
<a href="#contacto">Contacto</a>
</nav>
</header>
<main class="container">
<section class="card">
<h2>Bienvenido</h2>
<p>Este es un ejemplo de CSS externo.</p>
</section>
</main>
</body>
</html>

Puedes vincular varios archivos CSS para organizar mejor tu código:

<head>
<!-- CSS base -->
<link rel="stylesheet" href="css/reset.css">
<link rel="stylesheet" href="css/variables.css">
<!-- CSS de componentes -->
<link rel="stylesheet" href="css/header.css">
<link rel="stylesheet" href="css/footer.css">
<link rel="stylesheet" href="css/cards.css">
<!-- CSS de páginas específicas -->
<link rel="stylesheet" href="css/home.css">
</head>

Una regla CSS está compuesta por un selector y un bloque de declaraciones. Entender su estructura es fundamental.

selector {
propiedad: valor;
propiedad: valor;
}
/* Selector: indica QUÉ elementos se van a estilizar */
h1 {
/* Declaración 1 */
color: #2c3e50; /* propiedad: valor; */
/* Declaración 2 */
font-size: 32px;
/* Declaración 3 */
text-align: center;
/* Declaración 4 */
margin-bottom: 20px;
}
/* Fin del bloque de declaraciones */
  1. Selector Obligatorio

    • Define qué elementos HTML serán afectados
    • Ejemplos: h1, .clase, #id, div p, etc.
  2. Llaves { } Obligatorio

    • Delimitan el bloque de declaraciones
    • Todo lo que esté dentro se aplicará al selector
  3. Propiedad Obligatorio

    • Define qué aspecto se va a modificar
    • Ejemplos: color, font-size, margin, background
  4. Valor Obligatorio

    • Define cómo se modificará la propiedad
    • Ejemplos: red, 16px, center, #fff
  5. Punto y coma ; Recomendado

    • Separa las declaraciones
    • Opcional en la última declaración, pero es buena práctica incluirlo
/* Aplica a TODOS los párrafos */
p {
color: #333;
font-size: 16px;
line-height: 1.6;
margin-bottom: 15px;
}
.boton {
/* Tipografía */
font-family: Arial, sans-serif;
font-size: 16px;
font-weight: 600;
text-decoration: none;
/* Colores */
color: white;
background-color: #3498db;
/* Espaciado */
padding: 12px 24px;
margin: 10px 0;
/* Bordes */
border: none;
border-radius: 6px;
/* Efectos */
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
.boton:hover {
background-color: #2980b9;
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
}

Los comentarios son texto que el navegador ignora pero que ayuda a los desarrolladores a entender el código.

/* Este es un comentario de una línea */
/*
Este es un comentario
de múltiples líneas
que puede abarcar varios renglones
*/
/* ========================================
SECCIÓN: ESTILOS DEL HEADER
======================================== */
.header {
background: #333;
/* color: red; */ /* Código comentado temporalmente */
color: white; /* Color activo */
}
/* ==========================================
1. RESET Y ESTILOS GLOBALES
========================================== */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* ==========================================
2. TIPOGRAFÍA
========================================== */
body {
font-family: 'Roboto', sans-serif;
font-size: 16px;
}
/* ==========================================
3. COMPONENTES
========================================== */
/* --- Botones --- */
.btn { /* ... */ }
/* --- Tarjetas --- */
.card { /* ... */ }

Adoptar buenas prácticas desde el principio te ahorrará muchos problemas a futuro.

<!-- ✅ Recomendado -->
<link rel="stylesheet" href="styles.css">
<!-- ❌ Evitar -->
<p style="color: red;">Texto</p>
/* ==========================================
VARIABLES Y CONFIGURACIÓN
========================================== */
/* ==========================================
RESET Y BASE
========================================== */
/* ==========================================
LAYOUT
========================================== */
/* ==========================================
COMPONENTES
========================================== */
/* ==========================================
UTILIDADES
========================================== */
/* ✅ Buenos nombres */
.boton-primario { }
.tarjeta-producto { }
.encabezado-principal { }
.lista-navegacion { }
/* ❌ Malos nombres */
.btn1 { }
.azul { }
.grande { }
.div1 { }

4. Mantén la consistencia en la indentación

Section titled “4. Mantén la consistencia en la indentación”
/* ✅ Bien indentado */
.contenedor {
display: flex;
justify-content: center;
align-items: center;
}
.contenedor .item {
padding: 10px;
margin: 5px;
}
/* ❌ Mal indentado */
.contenedor{
display:flex;
justify-content:center;
align-items: center;}
.elemento {
/* Posicionamiento */
position: relative;
top: 0;
left: 0;
z-index: 10;
/* Modelo de caja */
display: block;
width: 100%;
height: auto;
padding: 20px;
margin: 10px 0;
/* Tipografía */
font-family: Arial, sans-serif;
font-size: 16px;
line-height: 1.5;
color: #333;
/* Visual */
background-color: white;
border: 1px solid #ddd;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
/* Efectos */
transition: all 0.3s ease;
cursor: pointer;
}

6. Usa shorthand properties cuando sea apropiado

Section titled “6. Usa shorthand properties cuando sea apropiado”
/* Forma corta (recomendada) */
.elemento {
margin: 10px 20px 10px 20px;
padding: 15px;
background: #fff url('imagen.jpg') no-repeat center;
border: 2px solid #333;
font: bold 16px/1.5 Arial, sans-serif;
}
/* ❌ Mal uso */
.texto {
color: red !important;
font-size: 20px !important;
}
/* ✅ Mejor: Usa especificidad correcta */
.contenedor .texto {
color: red;
font-size: 20px;
}
/* ⚠️ Uso aceptable: Sobrescribir estilos de librerías */
.bootstrap-override {
margin: 0 !important; /* Necesario para sobrescribir Bootstrap */
}

8. Usa unidades relativas cuando sea apropiado

Section titled “8. Usa unidades relativas cuando sea apropiado”
/* ✅ Responsive y escalable */
.contenedor {
width: 90%;
max-width: 1200px;
padding: 2rem;
font-size: 1.125rem; /* 18px si base es 16px */
}
/* ❌ Rígido y difícil de mantener */
.contenedor {
width: 1000px;
padding: 32px;
font-size: 18px;
}

Usa herramientas como:

10. Mantén un orden lógico de propiedades

Section titled “10. Mantén un orden lógico de propiedades”

Sigue un orden consistente (ejemplo: orden alfabético o por categorías):

.elemento {
/* 1. Posicionamiento */
position: absolute;
top: 0;
right: 0;
z-index: 10;
/* 2. Display y Box Model */
display: flex;
width: 100%;
height: auto;
padding: 20px;
margin: 10px;
/* 3. Tipografía */
font-family: Arial;
font-size: 16px;
color: #333;
text-align: center;
/* 4. Visual */
background: white;
border: 1px solid #ddd;
border-radius: 4px;
/* 5. Otros */
cursor: pointer;
transition: all 0.3s;
}

🐝