💡Heading, Paragraph and Line Breaks in Action
When writing content on a webpage, you'll mostly be working with headings, paragraphs, and the occasional line break. These tags help organize your text and make it easy to read — both for people and browsers
🧩 Headings (<h1> to <h6>)
HTML has 6 levels of headings
<h1> is the biggest and most important
<h6> is the smallest
Think of <h1> as the main title and the others as subheadings.
<h1>Main Page Title</h1>
<h2>Section Title</h2>
<h3>Subsection</h3>
<h4>Smaller Subsection</h4>
<h5>Even Smaller</h5>
<h6>Tiniest Heading</h6><div class="infographic-headings-simple">
<style>
.infographic-headings-simple {
--ink: #1a1a1a;
--paper: #faf8f4;
--paper-alt: #f0ece4;
--accent: #2563eb;
--accent-soft: #e3ebfd;
--line: #ddd6c9;
--display-font: 'Fraunces', serif;
--mono-font: 'IBM Plex Mono', monospace;
font-family: var(--display-font);
color: var(--ink);
margin: 0 auto;
box-sizing: border-box;
background: transparent;
}
.infographic-headings-simple[data-theme="dark"] {
--ink: #e8e6e1;
--paper: #121212;
--paper-alt: #1e1e26;
--accent: #5b8def;
--accent-soft: #202942;
--line: #2c313d;
}
.infographic-headings-simple * { box-sizing: border-box; }
.ihs-stage {
background: var(--paper-alt);
border: 1px solid var(--line);
border-top: 3px solid var(--accent);
min-height: 130px;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
margin-bottom: 1.5rem;
padding: 1rem;
transition: background 0.2s ease, border-color 0.2s ease;
}
.ihs-stage-text {
font-weight: 700;
line-height: 1;
margin: 0;
color: var(--ink);
transition: font-size 0.25s ease, color 0.2s ease;
}
@media (prefers-reduced-motion: reduce) {
.ihs-stage-text { transition: none; }
}
.ihs-tags {
display: flex;
gap: 0.5rem;
flex-wrap: wrap;
justify-content: center;
}
.ihs-tag {
font-family: var(--mono-font);
font-size: 0.95rem;
font-weight: 700;
color: var(--ink);
background: var(--paper);
border: 1px solid var(--line);
padding: 0.55rem 1rem;
cursor: pointer;
transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.ihs-tag:hover { border-color: var(--accent); }
.ihs-tag.is-active {
background: var(--accent);
border-color: var(--accent);
color: #fff;
}
</style>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Fraunces:wght@700&family=IBM+Plex+Mono:wght@700&display=swap" rel="stylesheet">
<div class="ihs-stage">
<p class="ihs-stage-text" id="ihsStageText">Click a tag</p>
</div>
<div class="ihs-tags" id="ihsTags">
<button class="ihs-tag" data-size="2em">h1</button>
<button class="ihs-tag" data-size="1.5em">h2</button>
<button class="ihs-tag" data-size="1.17em">h3</button>
<button class="ihs-tag" data-size="1em">h4</button>
<button class="ihs-tag" data-size="0.83em">h5</button>
<button class="ihs-tag" data-size="0.67em">h6</button>
</div>
<script>
(function () {
const wrapper = document.currentScript.closest('.infographic-headings-simple')
|| document.querySelector('.infographic-headings-simple');
const bodyAttr = document.body.getAttribute('data-darkmode');
let dark;
if (bodyAttr === 'true') {
dark = true;
} else if (bodyAttr === 'false') {
dark = false;
} else {
const match = document.cookie.match(/(?:^|;\s*)darkMode=([^;]+)/);
dark = match ? match[1] === 'true' : false;
}
if (dark) wrapper.setAttribute('data-theme', 'dark');
})();
(function () {
const tags = document.querySelectorAll('#ihsTags .ihs-tag');
const stageText = document.getElementById('ihsStageText');
tags.forEach(tag => {
tag.addEventListener('click', () => {
tags.forEach(t => t.classList.remove('is-active'));
tag.classList.add('is-active');
stageText.style.fontSize = tag.dataset.size;
stageText.textContent = `I am ${tag.textContent} tag`;
});
});
})();
</script>
</div>.demo {
font-family: system-ui, sans-serif;
padding: 16px;
}
.demo h1 {
color: #2563eb;
margin: 0 0 8px;
}
.demo p {
color: #4b5563;
margin: 0;
}document.querySelector('.demo h1')?.addEventListener('click', () => {
alert('Hello from live preview!');
});📝 Note: Always use headings in order — don’t skip from <h1> to <h4> without using <h2> and <h3> in between. It’s better for accessibility and SEO
Master Code Block (This will be used for further example)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Paragraph & Line Break Example</title>
</head>
<body>
<!--All content to be added here -->
</body>
</html>📄 Paragraphs (<p>)
Used for writing blocks of text
Automatically adds space above and below the paragraph
Keep each main idea in its own <p> tag
<p>This is a paragraph of text. You can write as much as you like here.</p>
<body>
<p> Paragraphs are used for writing blocks of text. Each paragraph is enclosed in <p> tags. </p>
<p> Browsers automatically add space above and below paragraphs to separate them visually.</p>
<p> It's a good idea to keep each main idea in its own paragraph for readability and structure. </p>
<p> This is a paragraph of text. You can write as much as you like here, and it will wrap automatically within the container. </p>
</body><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>P Tag Demo</title>
<style>
.infographic-ptagdemo {
--ink: #1a1a1a;
--ink-soft: #5c5c5c;
--paper: #ffffff;
--paper-alt: #f0ece4;
--accent: #2563eb;
--accent-soft:#e3ebfd;
--line: #ddd6c9;
box-sizing: border-box;
margin: 0 auto;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
background: var(--paper);
color: var(--ink);
border-radius: 14px;
overflow: hidden;
}
.infographic-ptagdemo[data-theme="dark"] {
--ink: #e8e6e1;
--ink-soft: #9a968c;
--paper: #121212;
--paper-alt: #1e1e26;
--accent: #5b8def;
--accent-soft:#202942;
--line: #2c313d;
}
.ha-toggle {
display: flex;
background: var(--paper-alt);
border: 1px solid var(--line);
border-radius: 999px;
padding: 0.25rem;
margin-bottom: 1.25rem;
gap: 0.25rem;
}
.ha-toggle button {
flex: 1;
border: none;
background: transparent;
color: var(--ink-soft);
font-family: inherit;
font-size: 0.82rem;
font-weight: 700;
padding: 0.55rem 0.8rem;
border-radius: 999px;
cursor: pointer;
transition: background 0.2s ease, color 0.2s ease;
}
.ha-toggle button.ha-on {
background: var(--accent);
color: #fff;
}
.ha-browser {
border: 1px solid var(--line);
border-radius: 10px;
overflow: hidden;
background: var(--paper);
}
.ha-browser-bar {
background: var(--paper-alt);
padding: 0.5rem 0.7rem;
display: flex;
align-items: center;
gap: 0.5rem;
border-bottom: 1px solid var(--line);
}
.ha-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--line); }
.ha-tab {
background: var(--paper);
border: 1px solid var(--line);
border-bottom: none;
border-radius: 6px 6px 0 0;
font-size: 0.72rem;
color: var(--ink-soft);
padding: 0.25rem 0.6rem;
}
.ha-urlrow {
background: var(--paper-alt);
padding: 0.35rem 0.7rem 0.6rem;
font-size: 0.72rem;
color: var(--ink-soft);
font-family: "SFMono-Regular", Consolas, monospace;
}
.ha-screen {
background: #ffffff;
color: #111;
padding: 1.3rem 1.4rem;
font-family: Georgia, "Times New Roman", serif;
font-size: 0.92rem;
line-height: 1.6;
min-height: 220px;
}
.ha-screen span {
display: inline;
transition: margin 0.25s ease;
}
.ha-screen.ha-spaced span {
display: block;
margin: 0 0 1.1rem;
}
.ha-screen.ha-spaced span:last-child { margin-bottom: 0; }
.ha-caption {
text-align: center;
margin-top: 0.9rem;
font-size: 0.78rem;
color: var(--ink-soft);
}
.ha-caption b { color: var(--ink); }
</style>
</head>
<body>
<div class="infographic-ptagdemo" id="ha-root">
<div class="ha-inner">
<div class="ha-toggle">
<button id="btn-off" class="ha-on">No <p> tags</button>
<button id="btn-on">With <p> tags</button>
</div>
<div class="ha-browser">
<div class="ha-browser-bar">
<span class="ha-dot"></span><span class="ha-dot"></span><span class="ha-dot"></span>
<div class="ha-tab">🌐 My First Page</div>
</div>
<div class="ha-urlrow">127.0.0.1:5500/paragraphs.html</div>
<div class="ha-screen" id="ha-screen">
<span>Paragraphs are used for writing blocks of text. Each paragraph is enclosed in tags.</span><span>Browsers automatically add space above and below paragraphs to separate them visually.</span><span>It's a good idea to keep each main idea in its own paragraph for readability and structure.</span><span>This is a paragraph of text. You can write as much as you like here, and it will wrap automatically within the container.</span>
</div>
</div>
<p class="ha-caption">Same text, same words — <b><p></b> is what turns it into readable blocks.</p>
</div>
</div>
<script>
(function () {
const wrapper = document.getElementById('ha-root');
const bodyAttr = document.body.getAttribute('data-darkmode');
let dark;
if (bodyAttr === 'true') {
dark = true;
} else if (bodyAttr === 'false') {
dark = false;
} else {
const match = document.cookie.match(/(?:^|;\s*)darkMode=([^;]+)/);
dark = match ? match[1] === 'true' : false;
}
if (dark) wrapper.setAttribute('data-theme', 'dark');
})();
(function () {
const screen = document.getElementById('ha-screen');
const btnOn = document.getElementById('btn-on');
const btnOff = document.getElementById('btn-off');
btnOn.addEventListener('click', () => {
screen.classList.add('ha-spaced');
btnOn.classList.add('ha-on');
btnOff.classList.remove('ha-on');
});
btnOff.addEventListener('click', () => {
screen.classList.remove('ha-spaced');
btnOff.classList.add('ha-on');
btnOn.classList.remove('ha-on');
});
})();
</script>
</body>
</html>.demo {
font-family: system-ui, sans-serif;
padding: 16px;
}
.demo h1 {
color: #2563eb;
margin: 0 0 8px;
}
.demo p {
color: #4b5563;
margin: 0;
}document.querySelector('.demo h1')?.addEventListener('click', () => {
alert('Hello from live preview!');
});↩️ Line Breaks (<br>)
<p>This is line one.<br>This is line two.</p>Use it sparingly — if you're breaking lines often, you probably need a new paragraph instead.
Used when you want to break the line without starting a new paragraph
It’s a self-closing tag, so no closing </br>
<div class="infographic-br2">
<style>
.infographic-br2 {
--ink: #1a1a1a;
--ink-soft: #5c5c5c;
--paper: #faf8f4;
--paper-alt: #f0ece4;
--accent: #2563eb;
--accent-soft: #e3ebfd;
--line: #ddd6c9;
--display-font: 'Fraunces', serif;
--body-font: 'Inter', sans-serif;
--mono-font: 'IBM Plex Mono', monospace;
font-family: var(--body-font);
color: var(--ink);
margin: 0 auto;
box-sizing: border-box;
background: transparent;
}
.infographic-br2[data-theme="dark"] {
--ink: #e8e6e1;
--ink-soft: #9a968c;
--paper: #121212;
--paper-alt: #1e1e26;
--accent: #5b8def;
--accent-soft: #202942;
--line: #2c313d;
}
.infographic-br2 * { box-sizing: border-box; }
.ibr2-title {
font-family: var(--display-font);
font-size: clamp(1.6rem, 5vw, 2rem);
margin: 0 0 0.3rem;
color: var(--ink);
}
.ibr2-title code { font-family: var(--mono-font); color: var(--accent); }
.ibr2-sub {
color: var(--ink-soft);
font-size: 0.85rem;
margin: 0 0 1.5rem;
}
.ibr2-label {
font-family: var(--mono-font);
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--ink-soft);
margin-bottom: 0.4rem;
display: block;
}
/* Code panel — intentionally a fixed dark editor palette in both themes,
the way a code editor pane stays dark regardless of the page around it.
Not tied to --paper/--ink on purpose. */
.ibr2-code-panel {
background: #1f1d1a;
border: 1px solid var(--line);
padding: 1rem 1.1rem;
margin-bottom: 1.5rem;
transition: border-color 0.2s ease;
}
.ibr2-code-lines {
font-family: var(--mono-font);
font-size: 0.85rem;
color: #e8e3d8;
line-height: 2.1;
min-height: 2.1em;
}
.ibr2-line {
display: flex;
align-items: center;
gap: 0.4rem;
}
.ibr2-br-slot {
display: inline-flex;
align-items: center;
justify-content: center;
width: 100%;
height: 1.6rem;
border: 1px dashed #50493d;
border-radius: 3px;
color: #6b6354;
font-size: 0.72rem;
cursor: pointer;
margin: 0.15rem 0;
transition: border-color 0.15s, color 0.15s, background 0.15s;
user-select: none;
}
.ibr2-br-slot:hover {
border-color: var(--accent);
color: var(--accent);
}
.ibr2-br-slot.is-filled {
border: none;
background: rgba(37, 99, 235, 0.18);
color: #7da6ff;
font-weight: 700;
cursor: pointer;
}
.ibr2-br-slot.is-filled:hover {
background: rgba(37, 99, 235, 0.28);
}
/* Output panel */
.ibr2-output-panel {
background: var(--paper-alt);
border: 1px solid var(--line);
border-top: 3px solid var(--accent);
padding: 1.5rem;
min-height: 100px;
transition: background 0.2s ease, border-color 0.2s ease;
}
.ibr2-output-text {
margin: 0;
font-size: 1.05rem;
line-height: 1.6;
color: var(--ink);
}
.ibr2-output-text .ibr2-gap {
display: inline;
}
.ibr2-gap.is-active {
display: block;
height: 1.6em;
}
.ibr2-hint {
font-size: 0.78rem;
color: var(--ink-soft);
text-align: center;
margin-top: 0.6rem;
}
</style>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Fraunces:wght@700&family=Inter:wght@400;500&family=IBM+Plex+Mono:wght@500;700&display=swap" rel="stylesheet">
<span class="ibr2-label">code</span>
<div class="ibr2-code-panel">
<div class="ibr2-code-lines">
<div class="ibr2-line"><p>Roses are red</div>
<div class="ibr2-br-slot" id="ibrSlot">+ <br></div>
<div class="ibr2-line">Violets are blue</p></div>
</div>
</div>
<span class="ibr2-label">output</span>
<div class="ibr2-output-panel">
<p class="ibr2-output-text">Roses are red<span class="ibr2-gap" id="ibrGap"></span> Violets are blue</p>
</div>
<p class="ibr2-hint">Click the slot again to remove the tag.</p>
<script>
(function () {
const wrapper = document.currentScript.closest('.infographic-br2')
|| document.querySelector('.infographic-br2');
const bodyAttr = document.body.getAttribute('data-darkmode');
let dark;
if (bodyAttr === 'true') {
dark = true;
} else if (bodyAttr === 'false') {
dark = false;
} else {
const match = document.cookie.match(/(?:^|;\s*)darkMode=([^;]+)/);
dark = match ? match[1] === 'true' : false;
}
if (dark) wrapper.setAttribute('data-theme', 'dark');
})();
(function () {
const slot = document.getElementById('ibrSlot');
const gap = document.getElementById('ibrGap');
slot.addEventListener('click', () => {
const isFilled = slot.classList.toggle('is-filled');
slot.textContent = isFilled ? '<br>' : '+ <br>';
gap.classList.toggle('is-active', isFilled);
});
})();
</script>
</div>.demo {
font-family: system-ui, sans-serif;
padding: 16px;
}
.demo h1 {
color: #2563eb;
margin: 0 0 8px;
}
.demo p {
color: #4b5563;
margin: 0;
}document.querySelector('.demo h1')?.addEventListener('click', () => {
alert('Hello from live preview!');
});