En el desarrollo web, ciertos estilos en CSS se transfieren automáticamente de los elementos padres a sus hijos, un concepto conocido como herencia. Por lo genarel, las propiedades relacionadas con la presentación del texto —como el color, la fuente y el tamaño— se heredan por defecto. Esto permite mantener una coherencia visual sin necesidad de repetir reglas. Sin embargo, las propiedades del modelo de caja (como margin, padding y border) generalmente no se heredan, debiendo ser aplicadas explícitamente a cada elemento.
Mecanismo de Cascada y Especificidad
El "Cascading" en CSS define el algoritmo utilizado para resolver conflictos cuando varias reglas intentan aplicar estilos contradictorios al mismo elemento. El proceso sigue un orden jerárquico estricto para determinar qué estilo prevalece.
Cálculo de la Especificidad
La especificidad es un peso o puntuación que se asigna a cada declaración de CSS. Para determinar qué regla se aplica, se calcula un valor basado en la composición del selector:
- ID: Tiene el valor más alto (ej. 100).
- Clase, atributo o pseudo-clase: Valor medio (ej. 10).
- Elemento (etiqueta) o pseudo-elemento: Valor bajo (ej. 1).
El selector con el puntaje total más alto gana. En caso de empate, se aplica la regla que aparece última en el orden de carga (la regla de "última declaración").
A continuación, se presenta un ejemplo práctico donde diferentes selectores compiten por definir el color de un texto. El selector con mayor especificidad (combinación de ID y clase) impondrá su estilo.
<html lang="es">
<head>
<style>
/* Especificidad: 0,0,1 (1 elemento) - Color Azul */
p {
color: blue;
}
/* Especificidad: 0,1,1 (1 clase + 1 elemento) - Color Verde */
p.destacado {
color: green;
}
/* Especificidad: 1,1,1 (1 id + 1 clase + 1 elemento) - Color Rojo (Gana) */
#contenedor-principal p.destacado {
color: red;
font-weight: bold;
}
</style>
</head>
<body>
<div id="contenedor-principal">
<!-- Este texto será rojo debido a la mayor especificidad del selector -->
<p class="destacado">Este texto es rojo por especificidad alta.</p>
</div>
</body>
</html>
Propiedades de Fuente
Las propiedades de fuente cnotrolan la apariencia del texto. Las más fundamentales incluyen:
color: Define el color del texto (nombres, hex, RGB, HSL).font-family: Establece la tipografía. Es recomendable definir una lista de fuentes alternativas separadas por comas, para asegurar la renderización si la primera no está disponible.font-size: Controla el tamaño. Se puede usar unidades absolutas (px,pt) o relativas (rem,em,%). Las unidades relativas son preferibles para accesibilidad y diseño responsivo.font-style: Establece el estilo (normal, italic, oblique).font-weight: Define el grosor (normal, bold, 100-900).
Sintaxis Abreviada (Shorthand)
La propiedad font permite consolidar varias propiedades en una sola línea. El orden obligatorio es: estilo (opcional), varainte (opcional), peso (opcional), tamaño (obligatorio) y familia (obligatorio).
.texto-tipografico {
/* Orden: weight style size family */
font: bold italic 1.2rem "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
Propiedades de Texto
A diferencia de las propiedades de fuente (que afectan a la forma de las letras), las propiedades de texto afectan al espaciado y la disposición de los caracteres.
text-decoration: Añade líneas comounderline(subrayado),line-through(tachado) ooverline(sobrerrayado).text-align: Alinea el contenido del bloque (left,right,center,justify).text-shadow: Aplica sombra al texto. Sintaxis:desplazamientoX desplazamientoY desenfoque color.line-height: Ajusta la altura de línea, afectando el espacio vertical entre líneas de texto.text-transform: Modifica las mayúsculas/minúsculas (uppercase,lowercase,capitalize).letter-spacingyword-spacing: Controlan el espacio entre caracteres y palabras respectivamente.
El siguiente ejemplo demuestra la aplicación de estas propiedades para crear efectos visuales complejos:
<html lang="es">
<head>
<style>
.caja-texto {
border: 1px solid #ddd;
padding: 20px;
font-family: Arial, sans-serif;
}
.titulo-efecto {
font-size: 2rem;
text-align: center;
/* Sombra con múltiples capas */
text-shadow: 2px 2px 0px #fff, 4px 4px 0px rgba(0,0,0,0.2);
text-transform: uppercase;
letter-spacing: 3px;
}
.descripcion {
line-height: 1.8; /* Mejora la legibilidad */
color: #555;
text-align: justify;
}
.enlace-estilo {
text-decoration: none;
border-bottom: 1px dashed blue;
color: blue;
}
.palabras-espaciadas {
word-spacing: 15px;
font-weight: bold;
}
</style>
</head>
<body>
<div class="caja-texto">
<h1 class="titulo-efecto">Diseño Web Moderno</h1>
<p class="descripcion">
Las propiedades de texto permiten controlar detalles finos de la tipografía.
Utilizar line-height adecuado mejora la lectura, mientras que
letter-spacing puede añadir un toque elegante a los títulos.
</p>
<p class="palabras-espaciadas">Espaciado entre palabras.</p>
<a href="#" class="enlace-estilo">Visitar enlace</a>
</div>
</body>
</html>