Episode 34 of 53

CSS Paragraph Spacing

Learn how to control spacing between paragraphs and text blocks with margins.

Controlling spacing between paragraphs and content blocks is essential for creating readable, well-organized pages.

Margin for Paragraph Spacing

p {
    margin-bottom: 1rem;
}

/* Remove margin on the last paragraph */
p:last-child {
    margin-bottom: 0;
}

Spacing Between Headings and Paragraphs

h1, h2, h3 {
    margin-top: 2rem;
    margin-bottom: 0.5rem;
}

p {
    margin-bottom: 1rem;
}

/* No top margin on the first heading */
h1:first-child,
h2:first-child {
    margin-top: 0;
}

The Lobotomized Owl Selector

A clever technique to add spacing between any adjacent elements:

/* Add margin-top to every element that follows another */
.content * + * {
    margin-top: 1rem;
}

This creates consistent vertical rhythm without worrying about individual elements.

Using Gap

With Flexbox or Grid, you can use gap instead of margins:

.content {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

Best Practices

  • Use consistent spacing values (multiples of 0.25rem or 0.5rem)
  • Prefer margin-bottom over margin-top for content flow
  • Remove extra margins on first/last children to prevent double spacing