Controla las letras desplegables con las letras iniciales de CSS

El arte de diseñar mayúsculas iniciales existe desde hace cientos, si no miles de años. Su uso en estilos impresos para indicar el comienzo de una nueva sección o capítulo se puede ver a lo largo de la historia. Sin embargo, siempre ha sido problemático aplicar estilo en la era digital. No hay una solución "limpia" para aplicarles diseño.

La propiedad initial-letter de CSS facilitará mucho las cosas.

Navegadores compatibles

¿Dónde puedes probar initial-letter? Está disponible en Safari y en Chrome 110. En Safari, la propiedad necesita el prefijo -webkit-. Hay un problema abierto para que se implemente en Firefox.

Prueba la compatibilidad con initial-letter con lo siguiente:

@supports (initial-letter: 1 1) { /* Your supported styles */ }

Soluciones actuales

¿Cómo le aplicarías diseño a una letra inicial mayúscula en CSS hoy?

El pseudoelemento ::first-letter nos ayuda a resolver parte del problema.

p::first-letter {
  color: hsl(220, 94%, 51%);
  font-weight: bold;
  font-size: 4rem;
}

Sin embargo, es probable que debas buscar propiedades como "float" mientras calculas un tamaño para esa primera letra.

p::first-letter {
  color: hsl(220, 94%, 51%);
  font-weight: bold;
  font-size: 4rem;
  float: left;
  line-height: 1;
  margin-right: 0.25rem;
}

La introducción de nuevas unidades de CSS, como lh, podría aliviar algunos de estos problemas. Sin embargo, también tienen compatibilidad limitada (lh actualmente solo es compatible con Chrome).

p::first-letter {
  color: hsl(220, 94%, 51%);
  font-weight: bold;
  font-size: 3lh;
  float: left;
  line-height: 1;
  margin-right: 0.1lh;
}

Presentamos initial-letter

La propiedad initial-letter te brinda un control más detallado sobre este diseño de mayúscula inicial. Toma dos valores separados por espacios:

p::first-letter {
  initial-letter: 3.5 3;
}
  • El primer argumento define el tamaño de la letra y cuántas líneas ocupará. La letra se ampliará y mantendrá su relación de aspecto. No puedes usar un valor negativo, pero sí valores decimales.
  • El segundo argumento define el sumidero de letras. Esto se puede considerar como el desplazamiento de la posición en la que se colocará la letra. El segundo valor es opcional y no puede ser negativo. Si no está presente, se supone que el valor del tamaño de la letra se redondea al número entero más cercano. Esto equivale a usar la palabra clave "drop". El sumidero también acepta otro valor de palabra clave, "raise", que equivale a un sumidero de 1.

Consulta esta demostración en la que puedes cambiar los valores para ver cómo afectan el diseño de la mayúscula inicial.

Combínalo con ::first-line y podrías tener algo como lo siguiente:

p::first-line {
  font-variant: small-caps;
  font-weight: bold;
  font-size: 1.25rem;
}
p::first-letter {
  font-family: "Merriweather", serif;
  initial-letter: 3.5 3;
  font-weight: bold;
  line-height: 1;
  margin-right: 1rem;
  color: #3b5bdb;
  text-shadow: 0.25rem 0.25rem #be4bdb;
}

O tal vez, dale un border. Observa cómo el siguiente ejemplo usa la palabra clave “drop”, que sería la predeterminada si se omite y equivale a 3: css p::first-letter { font-family: "Merriweather", serif; initial-letter: 3.5 drop; font-weight: bold; line-height: 1; margin-right: 1rem; color: #3b5bdb; border: 0.25rem dashed #be4bdb; padding: 0.5rem; border-radius: 5px; }

Tal vez agregues un background o algunos box-shadow:

p::first-letter {
  font-family: "Merriweather", serif;
  initial-letter: 3.5 3;
  font-weight: bold;
  line-height: 1;
  margin-right: 1rem;
  color: var(--surface-1);
  background: #be4bdb;
  padding: 0.5rem;
  border-radius: 5px;
  box-shadow: 0.5rem 0.5rem 0 #3b5bdb;
}

O bien recorta el fondo en el texto:

p::first-letter {
  background: linear-gradient(to bottom right,#1f005c,#5b0060,#870160,#ac255e,#ca485c,#e16b5c,#f39060,#ffb56b);
  font-family: "Merriweather", serif;
  initial-letter: 3.5 3;
  font-weight: bold;
  line-height: 1;
  margin-right: 1rem;
  color: transparent;
  -webkit-background-clip: text;
  padding: 0.5rem;
}

Tienes muchas posibilidades.

Y ahí lo tienes, un control más preciso sobre el estilo de la letra inicial mayúscula con initial-letter. ¿Agregarías letras iniciales mayúsculas a tu tipografía? ¿Cómo podrías diseñarlos? Dinos si necesitas más ayuda.