Selectores y propiedades fundamentales

Lectura
30 min~7 min lectura
CONCEPTO CLAVE: Los selectores CSS son los patrones que usamos para «apuntar» a los elementos HTML que queremos estilizar. Sin selectores, CSS no sabría qué elemento modificar. Dominar los selectores es la base de todo el diseño web moderno.

📚 Selectores y Propiedades Fundamentales en CSS

Bienvenido a esta lección donde aprenderás los cimientos de CSS: cómo seleccionar elementos HTML y cómo aplicarles estilos que transformen completamente tu página web. Estos conocimientos son esenciales para cualquier desarrollador web.

🔍 ¿Qué es un Selector?

Un selector es la parte de la regla CSS que indica a qué elemento(s) se aplicarán los estilos. Piensa en él como la «dirección» que le das a CSS para que sepa exactamente qué debe decorar.

📌 La sintaxis básica de CSS siempre sigue este patrón:
selector { propiedad: valor; }
Puedes añadir tantos pares propiedad-valor como necesites, separados por punto y coma.

📋 Tipos de Selectores Básicos

1. Selector de Etiqueta (Tipo)

El selector más simple: usa el nombre de la etiqueta HTML directamente. Afecta a todos los elementos de ese tipo en tu página.

/* Todos los párrafos serán azules */
p {
    color: blue;
}

/* Todos los títulos h1 serán rojos y centrados */
h1 {
    color: red;
    text-align: center;
}

/* Todos los enlaces serán verdes y sin subrayado */
a {
    color: green;
    text-decoration: none;
}

2. Selector de Clase

Las clases son quizás el selector más utilizado. Se definen con un punto (.) seguido del nombre de la clase. Puedes reutilizar una misma clase en múltiples elementos.

/* En HTML: <div class="tarjeta"> */
.tarjeta {
    background-color: #f5f5f5;
    border-radius: 8px;
    padding: 20px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

/* Elementos con múltiples clases */
.tarjeta.destaque {
    border: 2px solid gold;
    transform: scale(1.02);
}
💡 Consejo profesional: Nombra tus clases según su función o contenido, nunca según su apariencia. Usa .boton-principal en lugar de .boton-rojo. Así si luego cambias el color, el nombre seguirá teniendo sentido.

3. Selector de ID

El selector de ID usa el símbolo (#) seguido del nombre del ID. A diferencia de las clases, un ID debe ser único en toda la página. Úsalo para elementos que aparecen una sola vez: cabecera, pie, modal, etc.

/* En HTML: <header id="encabezado-principal"> */
#encabezado-principal {
    background-color: #2c3e50;
    color: white;
    padding: 30px;
    text-align: center;
}

/* Error común: usar el mismo ID en varios elementos */
/* #menu { } ← Solo debería existir UNA vez */
⚠️ Advertencia: Evita abusar de los selectores de ID. Son muy específicos y dificultan la reutilización de estilos. Prioriza las clases para el estilado general.

4. Selector Universal

El asterisco (*) selecciona todos los elementos de la página. Es útil para crear un «reset» inicial o aplicar estilos base a todo el documento.

/* Reset básico que eliminan márgenes y paddings por defecto */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* También puedes combinarlo */
*.importante {
    font-weight: bold;
    color: #e74c3c;
}

🎯 Selectores Combinados

Selector Descendiente (espacio)

Selecciona elementos que están dentro de otros, sin importar cuántos niveles de profundidad los separen.

/* Todos los <span> que estén dentro de <article> */
article span {
    color: #3498db;
}

/* Incluso más específico */
article main p span.destacado {
    background-color: yellow;
}

Selector de Hijo (>)

Selecciona solo los elementos que son hijos directos, es decir, un nivel inmediatamente inferior.

/* Solo los <li> que son hijos directos de <ul> */
ul > li {
    list-style-type: square;
}

/* No afectaría a <li> dentro de un <ol> anidado */

Selector de Hermanos Adyacentes (+)

Selecciona un elemento que viene inmediatamente después de otro.

/* El primer párrafo después de un h2 */
h2 + p {
    font-style: italic;
    color: #555;
}

/* El input que viene justo después de una etiqueta label */
label + input {
    margin-left: 10px;
}

🛠️ Propiedades CSS Fundamentales

Ahora que conoces los selectores, veamos las propiedades más importantes que usarás diariamente.

Propiedad Función Ejemplo de valor
color Color del texto blue, #3498db, rgb(52,152,219)
background-color Color de fondo white, #f0f0f0, rgba(0,0,0,0.5)
font-size Tamaño de fuente 16px, 1.2em, 2rem
font-family Tipo de letra Arial, 'Open Sans', sans-serif
padding Espacio interno 10px, 20px 30px, 1rem 2rem
margin Espacio externo 0 auto, 10px 20px
border Bordes 1px solid black, 2px dashed red
width Ancho 100%, 300px, 50vw
height Alto auto, 200px, 100vh
📌 Valores de color: Puedes especificar colores de tres formas principales: nombre inglés (red), código hexadecimal (#ff0000), o función RGB (rgb(255,0,0)). El hexadecimal es el más usado en proyectos profesionales.

📏 Modelo de Caja: padding, margin y border

Entender el modelo de caja es crucial. Cada elemento HTML se renderiza como una caja rectangular con cuatro capas:

  1. Content (Contenido): El texto o elementos dentro del elemento.
  2. Padding (Relleno): Espacio interno entre el contenido y el borde.
  3. Border (Borde): La línea que rodea el padding y el contenido.
  4. Margin (Margen): Espacio externo que separa el elemento de sus vecinos.
.caja-ejemplo {
    /* Padding: espacio interno */
    padding: 20px;
    
    /* Border: marco visible */
    border: 2px solid #3498db;
    
    /* Margin: espacio hacia afuera */
    margin: 15px;
    
    /* El resultado visual */
    background-color: #ecf0f1;
    border-radius: 8px;
}
Ver más: Atajo de propiedades padding y margin

Puedes especificar los valores de padding y margin de forma abreviada:

  • padding: 10px; → Los cuatro lados iguales
  • padding: 10px 20px; → Vertical (arriba/abajo) y Horizontal (izquierda/derecha)
  • padding: 10px 15px 20px 25px; → Arriba, derecha, abajo, izquierda (sentido horario)

🎨 Fuentes y Texto

.articulo {
    /* Tamaño de fuente con unidad relativa */
    font-size: 1.125rem; /* 18px aproximadamente */
    
    /* Familia tipográfica con alternativas */
    font-family: 'Segoe UI', Tahoma, sans-serif;
    
    /* Peso de la fuente */
    font-weight: 600;
    
    /* Altura de línea para legibilidad */
    line-height: 1.7;
    
    /* Transformación de texto */
    text-transform: uppercase;
    letter-spacing: 2px;
}

/* Fuentes de Google Fonts */
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');

body {
    font-family: 'Roboto', sans-serif;
}
💡 Tip de accesibilidad: Usa unidades relativas como rem o em en lugar de píxeles. Así los usuarios pueden ajustar el tamaño de texto en su navegador sin romper tu diseño.

🔗 Ejemplo Práctico Completo

Vamos a crear una tarjeta de perfil elegante combinando todo lo aprendido:

<!-- HTML -->
<article class="perfil">
    <img src="avatar.jpg" alt="Foto de María" class="perfil-imagen">
    <h2 class="perfil-nombre">María García</h2>
    <p class="perfil-titulo">Desarrolladora Frontend</p>
    <p class="perfil-bio">Especialista en crear experiencias web modernas y accesibles.</p>
    <button class="perfil-boton">Contactar</button>
</article>

/* CSS */
.perfil {
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    color: white;
    padding: 40px;
    border-radius: 16px;
    text-align: center;
    max-width: 350px;
    margin: 20px auto;
    box-shadow: 0 10px 30px rgba(102,126,234,0.4);
}

.perfil-imagen {
    width: 120px;
    height: 120px;
    border-radius: 50%;
    border: 4px solid white;
    object-fit: cover;
}

.perfil-nombre {
    font-size: 1.5rem;
    margin: 15px 0 5px;
}

.perfil-titulo {
    font-size: 0.9rem;
    opacity: 0.9;
    margin-bottom: 20px;
}

.perfil-boton {
    background-color: white;
    color: #667eea;
    border: none;
    padding: 12px 30px;
    border-radius: 25px;
    font-weight: bold;
    cursor: pointer;
    transition: transform 0.2s, box-shadow 0.2s;
}

.perfil-boton:hover {
    transform: translateY(-2px);
    box-shadow: 0 5px 15px rgba(0,0,0,0.2);
}
«CSS es el lenguaje que convierte documentos HTML planos en experiencias visuales memorables. Dominar los selectores y propiedades fundamentales es tu primer paso hacia el diseño web profesional.»

📝 Resumen de la Lección

  • Selectores básicos: etiqueta, clase (.), ID (#), universal (*)
  • Selectores combinados: descendiente (espacio), hijo (>), hermano (+)
  • Modelo de caja: padding (interno), margin (externo), border (borde)
  • Propiedades fundamentales: color, background, font-size, font-family, width, height
  • Buenas prácticas: nombrar clases por función, usar unidades relativas, priorizar clases sobre IDs
🧠 Quiz: Selectores CSS

¿Cuál de los siguientes selectores aplicaría estilos SOLO a los elementos <span> que son hijos directos de un elemento con clase "contenedor"?

  • A. .contenedor span
  • B. .contenedor > span
  • C. #contenedor span
  • D. .contenedor + span
✅ Respuesta correcta: B. .contenedor > span
El selector > (hijo directo) garantiza que los <span> sean hijos inmediatos de .contenedor, no nietos o descendientes más profundos. Las otras opciones: A selecciona cualquier descendiente, C requiere un ID, y D seleccionaría un hermano adyacente.
CONCEPTO CLAVE: La especificidad determina qué regla CSS prevalece cuando varias reglas aplican al mismo elemento. El orden de prioridad es: ID (#) > Clase (.) > Etiqueta. Escribe selectores lo más simples posible para evitar conflictos y mantenimiento difícil.

En la siguiente lección profundizaremos en flexbox y grid, las herramientas de layout más poderosas de CSS moderno que te permitirán crear diseños complejos con facilidad.