A arte de estilizar letras capitulares existe há centenas, senão milhares de anos. O uso de estilos de impressão para indicar o início de uma nova seção ou capítulo pode ser visto ao longo da história. Mas sempre foi problemático estilizar na era digital. Não há uma solução "limpa" para definir o estilo delas.
A propriedade initial-letter
do CSS vai facilitar muito as coisas.
Suporte ao navegador
Onde você pode testar o initial-letter
? Ele está disponível no Safari e no Chrome 110. No Safari, a propriedade precisa do prefixo -webkit-
. Há um problema aberto para que ele seja implementado no Firefox.
Teste a compatibilidade com initial-letter
usando:
@supports (initial-letter: 1 1) { /* Your supported styles */ }
Soluções atuais
Como você pode estilizar uma letra capitular em CSS hoje?
O pseudoelemento ::first-letter
nos ajuda um pouco.
p::first-letter { color: hsl(220, 94%, 51%); font-weight: bold; font-size: 4rem; }
No entanto, provavelmente você vai precisar acessar propriedades como "float" ao calcular um tamanho para essa primeira letra.
p::first-letter { color: hsl(220, 94%, 51%); font-weight: bold; font-size: 4rem; float: left; line-height: 1; margin-right: 0.25rem; }
A introdução de novas unidades CSS, como lh
, pode aliviar um pouco esse problema. No entanto, eles também têm suporte limitado (lh
atualmente só é compatível com o Chrome).
p::first-letter { color: hsl(220, 94%, 51%); font-weight: bold; font-size: 3lh; float: left; line-height: 1; margin-right: 0.1lh; }
Introdução à inicial-letter
A propriedade initial-letter
oferece um controle mais preciso sobre esse estilo de letra maiúscula. Ele usa dois valores separados por espaços:
p::first-letter { initial-letter: 3.5 3; }
- O primeiro argumento define o tamanho da letra e quantas linhas ela vai ocupar. A letra vai ser redimensionada mantendo a proporção. Não é possível usar um valor negativo, mas é possível usar valores decimais.
- O segundo argumento define o sink de letras. Isso pode ser considerado o deslocamento de onde a letra vai ficar. O segundo valor é opcional e não pode ser negativo. Se ele não estiver presente, o valor do tamanho da letra será arredondado para o número inteiro mais próximo. Isso equivale a usar a palavra-chave "drop". O sink também aceita outro valor de palavra-chave, "raise", que equivale a um sink de 1.
Confira esta demonstração em que você pode mudar os valores para ver como isso afeta o estilo da letra inicial maiúscula.
Combine com ::first-line
e você terá algo como isto:
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; }
Ou talvez, dê uma border
. Observe como o exemplo a seguir usa a palavra-chave "drop", que seria o padrão se omitida e 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; }
Talvez seja necessário adicionar um background
ou alguns 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; }
Ou recorte o plano de fundo para o 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; }
Você tem muitas possibilidades.
E aí está, um controle mais preciso sobre o estilo da letra maiúscula com initial-letter
! Você adicionaria letras capitulares à sua tipografia? Como você poderia estilizá-los? Conte para nós.