Curso de CSS / Estilos de parágrafos e listas
O CSS controla o alinhamento de parágrafos, recuo, espaçamento entre linhas e margens sem alterar o significado do texto. Para listas, o estilo e a posição do marcador afetam a aparência dos itens que ocupam várias linhas, enquanto o HTML ainda fornece a estrutura e ordenação da lista.
Separe o espaçamento entre linhas do espaçamento entre parágrafos
.article p {
line-height: 1.65;
margin-block: 0 1.2em;
}
Ao aumentar line-height, como explicado em Fontes, tamanho do texto e altura de linha, o espaçamento das linhas no mesmo parágrafo se torna maior. Aumentar margin-block aumenta o espaço externo entre a caixa do parágrafo e o conteúdo seguinte. Usar os dois de forma intercambiável pode parecer adequado em parágrafos curtos, mas pode resultar em espaçamento excessivo entre linhas em parágrafos longos.
margin-block: 0 1.2em define a margem inicial do bloco como zero e a margem final do bloco como 1.2em. Neste exemplo de escrita horizontal, essas são a parte superior e inferior. A escrita vertical altera as direções físicas. Aqui, em usa o próprio tamanho de fonte do parágrafo. Veja MDN: margin block.
Os navegadores fornecem margens padrão para parágrafos e listas. Substitua-as deliberadamente para diferenciar esses padrões do seu próprio espaçamento. As margens verticais adjacentes de blocos podem se colapsar em vez de se somar. Este exemplo define a margem inicial do parágrafo para zero e controla o espaçamento com sua margem final. Para mais detalhes, veja O Modelo de Caixa CSS: Conteúdo, Preenchimento, Borda e Margem.
Compare o alinhamento de texto e a indentação da primeira linha
.article p { text-align: start; }
.article .intro { text-indent: 1.5em; }
text-align determina o alinhamento do texto dentro de uma linha. start é o início do fluxo de texto e está à esquerda em um documento básico da esquerda para a direita. Esta não é uma propriedade que move toda a caixa de parágrafo para o centro da tela. Descrições longas centralizadas têm diferentes posições iniciais para cada linha, então escolha primeiro um alinhamento fácil de ler para o corpo do texto.
text-indent: 1.5em indenta o início da primeira linha, não cada linha. O exemplo inclui class="intro" no primeiro parágrafo de todo o exemplo para que você possa observá-lo em ação. Se você quiser indentar um parágrafo inteiro, será necessário revisar outras configurações, como padding. Altere o alinhamento, a indentação e as margens, e compare quais partes se movem.
Posicione marcadores de lista e texto em várias linhas
Use ol para processos ordenados e ul para itens onde a ordem não é importante. Alterar a forma do número para um ponto no CSS não muda a estrutura HTML original. Escolha primeiro o significado do conteúdo e depois ajuste o método de exibição.
| Propriedade | O que controla | O que observar em entradas longas |
|---|---|---|
| list-style-type | Tipos de símbolos de exibição, como pontos e números | Você consegue entender o significado da ordem? |
| list-style-position: outside | Exibir símbolo fora da caixa de conteúdo | A segunda linha corresponde ao início da primeira linha? |
| list-style-position: inside | Incluir símbolo na primeira linha | A segunda linha vai até o fim do símbolo? |
| padding-inline-start | Espaçamento interno no início do fluxo de texto | O símbolo está cortado ou não está preso ao texto? |
Com outside, os marcadores de lista ficam fora da caixa de conteúdo, então reserve espaço no início em linha da lista. Neste exemplo da esquerda para a direita, padding-inline-start: 1.6em fornece preenchimento à esquerda. Com inside, o marcador ocupa espaço na primeira linha; as linhas subsequentes podem se estender abaixo de sua posição. Compare itens com textos suficientemente longos para ocupar várias linhas.
Remover os marcadores da lista também exige uma verificação de acessibilidade. O Safari pode omitir uma lista com list-style: none da árvore de acessibilidade quando ela está fora de nav. Considere role="list" quando for necessário manter a semântica da lista. O exemplo completo desta lição mantém seus marcadores. Veja MDN: estilo de lista.
Separe o espaçamento dos itens do espaçamento entre linhas
.article li + li { margin-block-start: 0.45em; }
li + li seleciona o li que vem imediatamente após outro li. Não cria espaço extra antes do primeiro item, apenas entre o segundo e os itens subsequentes. Partes dentro de um item que se estendem por várias linhas são controladas pela altura da linha herdada da lista. Se você apenas aumentar o espaçamento entre itens porque o conteúdo é denso, as frases dentro do item ainda podem parecer estreitas.
Execute o exemplo completo de parágrafo e lista
Salve o código abaixo como UTF-8 em paragraphs.html e abra-o. Como mantivemos as frases em ambas as listas iguais, só podemos compará-las onde aparecem. O recuo da primeira linha e as listas ordenadas também são verificados no mesmo arquivo.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Comparing paragraphs and lists</title>
<style>
body { margin: 24px; font-family: sans-serif; color: #333; }
.article { max-width: 65ch; }
.article p { line-height: 1.65; margin-block: 0 1.2em; text-align: start; }
.article .intro { text-indent: 1.5em; }
.article ul, .article ol { padding-inline-start: 1.6em; margin-block: 0 1.2em; line-height: 1.65; }
.article li + li { margin-block-start: 0.45em; }
.outside { list-style-position: outside; }
.inside { list-style-position: inside; }
ol { list-style-type: decimal; }
</style>
</head>
<body>
<main class="article">
<h1>Small Garden visitor guide</h1>
<p class="intro">If this is your first visit, check the signs first. This paragraph has a first-line indent. When the text wraps, the remaining lines return to the normal paragraph edge.</p>
<p>Use line-height for spacing between lines and margin for spacing between paragraphs. Narrow the window and check readability as the text wraps onto more lines.</p>
<h2>outside list</h2>
<ul class="outside">
<li>Check the soil before watering. Wipe up water spilled outside the pot so that other visitors do not slip.</li>
<li>Read the labels and signs, then follow the path. Compare how the second line of a wrapped list item aligns with its first line.</li>
</ul>
<h2>inside list</h2>
<ul class="inside">
<li>Check the soil before watering. Wipe up water spilled outside the pot so that other visitors do not slip.</li>
<li>Read the labels and signs, then follow the path. Compare how the second line of a wrapped list item aligns with its first line.</li>
</ul>
<h2>Preparation in order</h2>
<ol><li>Read the notice.</li><li>Prepare a watering can.</li><li>Put tools back after use.</li></ol>
</main>
</body>
</html>
Teste cada alteração de espaçamento
- Reduza a largura da janela para que os itens da lista ocupem mais de uma linha. Com outside, compare o início das linhas de texto; com inside, observe se a segunda linha se estende sob a posição do marcador.
- Altere text-indent em .intro para 0. Verifique se a posição inicial apenas da primeira linha do primeiro parágrafo mudou e restaure 1.5em.
- Altere o segundo valor de margin-block do parágrafo de 1.2em para 0. Certifique-se de que o espaço entre parágrafos seja reduzido, mantendo o espaçamento de linha dentro do parágrafo. Em seguida, altere apenas o line-height para 1.2 para distinguir a diferença e depois retorne ao valor original.
- Compare alterando 0.45em de li + li para 0 e 1em. Certifique-se de que o espaçamento entre linhas dentro do item e o espaço antes do primeiro item não diferem.
Se um símbolo estiver truncado, verifique o preenchimento da lista e o transbordamento dos elementos externos. Se apenas alguns parágrafos estiverem espaçados de forma diferente, verifique o seletor e os estilos padrão do navegador. 65ch em todo o exemplo é o comprimento máximo baseado na largura do número 0 e não é um valor fixo para o número de caracteres.




