HTML Text and Typography Elements

1. Block-level Text Elements (<p>, <div>, <blockquote>)

Element Purpose Display Semantic Meaning
<p> Paragraph of text Block (margin top/bottom) Text paragraph
<div> Generic container Block (no default margin) No semantic meaning (use for styling/layout only)
<blockquote> Extended quotation Block (indented, margin) Quoted content from external source
<cite> Citation/reference title Inline (italic) Title of creative work
<q> Inline quotation Inline (with quotes) Short quoted text
<hr> Thematic break Block (horizontal rule) Topic/section separation
Paragraph (<p>) Rules:
  • Cannot contain block elements
  • Can contain inline and text only
  • Auto-closes when encountering block element
  • Use for text content, not layout
  • Browser adds default margins
Blockquote Attributes:
Attribute Purpose
cite URL of quote source

Use <cite> element for visible citation

Example: Text block elements usage

<!-- Paragraphs -->
<p>This is a standard paragraph with text content.</p>
<p>Paragraphs can contain <strong>inline elements</strong> and <a href="#">links</a>.</p>

<!-- Blockquote with citation -->
<blockquote cite="https://example.com/source">
  <p>The only way to do great work is to love what you do.</p>
  <footer>— <cite>Steve Jobs</cite></footer>
</blockquote>

<!-- Inline quote -->
<p>As Einstein said, <q>Imagination is more important than knowledge.</q></p>

<!-- Thematic break -->
<section>First topic content</section>
<hr>
<section>New topic content</section>

<!-- Generic container (styling only) -->
<div class="content-wrapper">
  <p>Wrapped content</p>
</div>

2. List Elements (<ul>, <ol>, <li>, <dl>, <dt>, <dd>)

Element Type Purpose Child Elements
<ul> Unordered List Bulleted list (order doesn't matter) Only <li>
<ol> Ordered List Numbered list (sequential order) Only <li>
<li> List Item Individual list item Any flow content
<dl> Description List Term-description pairs Only <dt> and <dd>
<dt> Description Term Term being defined Inline content only
<dd> Description Details Definition/description of term Any flow content

Ordered List Attributes

Attribute Values Purpose
type 1, A, a, I, i Numbering style
start Number Starting value
reversed Boolean Descending order
List Item Attributes:
Attribute Purpose
value Set specific item number (ol only)
List Nesting:
  • Lists can be nested infinitely
  • Nest lists inside <li> elements
  • Can mix ul and ol in nested lists

Example: Various list types and configurations

<!-- Unordered list -->
<ul>
  <li>First item</li>
  <li>Second item</li>
  <li>Third item</li>
</ul>

<!-- Ordered list with attributes -->
<ol type="A" start="3">
  <li>Item C</li>
  <li>Item D</li>
  <li value="10">Item J (skip to 10)</li>
</ol>

<!-- Reversed numbering -->
<ol reversed>
  <li>Third</li>
  <li>Second</li>
  <li>First</li>
</ol>

<!-- Nested lists -->
<ul>
  <li>Main item 1
    <ul>
      <li>Sub item 1.1</li>
      <li>Sub item 1.2</li>
    </ul>
  </li>
  <li>Main item 2</li>
</ul>

<!-- Description list -->
<dl>
  <dt>HTML</dt>
  <dd>HyperText Markup Language</dd>
  
  <dt>CSS</dt>
  <dd>Cascading Style Sheets</dd>
  
  <dt>JavaScript</dt>
  <dd>Programming language for web interactivity</dd>
  <dd>Also known as ECMAScript</dd>
</dl>

3. Preformatted Content (<pre>, <code>, <samp>, <kbd>)

Element Purpose Whitespace Font
<pre> Preformatted text (preserves whitespace) Preserved Monospace
<code> Computer code fragment Collapsed Monospace
<samp> Sample program output Collapsed Monospace
<kbd> Keyboard input Collapsed Monospace
<var> Variable or placeholder Collapsed Italic (default)

Common Patterns

Pattern Use Case
<pre><code> Multi-line code blocks
<code> Inline code snippets
<samp> Console/terminal output
<kbd> Keyboard shortcuts
Important Notes:
  • <pre> preserves all whitespace and line breaks
  • Always escape HTML in code examples
  • <code> is inline by default
  • Combine <pre><code> for code blocks
  • <samp> vs <code>: output vs source code
  • <kbd> can be nested for key combinations

Example: Preformatted and code elements

<!-- Inline code -->
<p>Use the <code>console.log()</code> function to debug.</p>

<!-- Multi-line code block -->
<pre><code>function greet(name) {
    return `Hello, ${name}!`;
}
console.log(greet('World'));</code></pre>

<!-- Sample output -->
<p>The program outputs: <samp>Hello, World!</samp></p>

<!-- Keyboard input -->
<p>Press <kbd>Ctrl</kbd> + <kbd>C</kbd> to copy.</p>
<p>Save file with <kbd><kbd>Ctrl</kbd>+<kbd>S</kbd></kbd></p>

<!-- Variable/placeholder -->
<p>Replace <var>filename</var> with your actual file name.</p>

<!-- ASCII art / formatted text -->
<pre>
  *
 ***
*****
 ***
  *
</pre>

<!-- Terminal session -->
<pre><samp>$ npm install package-name
added 42 packages in 3.5s</samp></pre>
Warning: <pre> preserves ALL whitespace including leading spaces and blank lines. Be careful with indentation in your source code.

4. Inline Text Semantics (<span>, <em>, <strong>, <mark>)

Element Purpose Default Style Semantic Meaning
<span> Generic inline container None No semantic meaning (styling/scripting only)
<em> Emphasis Italic Stress emphasis
<strong> Strong importance Bold Strong importance/urgency
<mark> Highlighted/marked text Yellow background Relevance/reference highlight
<i> Alternate voice/mood Italic Technical terms, foreign words, thoughts
<b> Bring attention to Bold Keywords, product names (no importance)
<u> Unarticulated annotation Underline Spelling errors, proper names in Chinese
<s> Strikethrough Line through No longer accurate/relevant
<em> vs <i>:
  • <em>: Stress emphasis
  • <i>: Different quality (technical, foreign)
  • Screen readers emphasize <em>
  • Use <em> when meaning changes with stress
<strong> vs <b>:
  • <strong>: Important/urgent
  • <b>: Stylistic offset (no importance)
  • Use <strong> for warnings, critical info
  • Use <b> for keywords without emphasis

Use Cases by Element

Element Example Use
<mark> Search result highlights
<i> Foreign words, ship names
<b> Lead paragraph keywords
<u> Spelling mistake indication
<s> Old price, outdated info

Example: Inline text semantics in context

<!-- Emphasis changes meaning -->
<p><em>I</em> didn't say that.</p>
<p>I <em>didn't</em> say that.</p>
<p>I didn't <em>say</em> that.</p>

<!-- Strong importance -->
<p><strong>Warning:</strong> This action cannot be undone.</p>

<!-- Highlight/mark -->
<p>Search results for <mark>HTML</mark> elements.</p>

<!-- Italic for technical/foreign terms -->
<p>The <i>HMS Titanic</i> sank in 1912.</p>
<p>The term <i lang="fr">raison d'être</i> means reason for being.</p>

<!-- Bold for keywords (no importance) -->
<p>The <b>Responsive Web Design</b> approach adapts to screen sizes.</p>

<!-- Strikethrough for outdated info -->
<p>Price: <s>$99.99</s> $49.99 (Sale!)</p>

<!-- Underline for spelling errors -->
<p>She made a <u>speling</u> mistake.</p>

<!-- Generic span for styling -->
<p>Status: <span class="status-active">Active</span></p>

5. Text Modifications (<del>, <ins>, <sub>, <sup>, <small>)

Element Purpose Display Attributes
<del> Deleted/removed text Strikethrough cite, datetime
<ins> Inserted/added text Underline cite, datetime
<sub> Subscript Lowered, smaller None
<sup> Superscript Raised, smaller None
<small> Fine print/side comments Smaller text None

del/ins Attributes

Attribute Purpose Example
cite URL explaining change cite="changes.html"
datetime When change occurred datetime="2025-12-21"
Common Use Cases:
  • <sub>: Chemical formulas (H₂O), math
  • <sup>: Exponents (x²), footnotes
  • <small>: Copyright, disclaimers, legal
  • <del>/<ins>: Document revisions
  • Track changes in collaborative editing

Example: Text modification elements

<!-- Document revisions -->
<p>The meeting is scheduled for 
   <del datetime="2025-12-20T10:00">Thursday</del>
   <ins datetime="2025-12-20T14:30">Friday</ins>.
</p>

<!-- With citation -->
<p>Price: 
   <del cite="pricing-update.html">$99</del>
   <ins cite="pricing-update.html">$79</ins>
</p>

<!-- Subscript for chemical formulas -->
<p>Water: H<sub>2</sub>O</p>
<p>Carbon Dioxide: CO<sub>2</sub></p>

<!-- Superscript for exponents -->
<p>Area = πr<sup>2</sup></p>
<p>E = mc<sup>2</sup></p>

<!-- Superscript for footnotes -->
<p>This statement requires citation<sup>1</sup>.</p>

<!-- Small for fine print -->
<p>
  <small>© 2025 Company Name. All rights reserved.</small>
</p>
<p>
  Special offer! <small>*Terms and conditions apply</small>
</p>

<!-- Mathematical expressions -->
<p>
  (a + b)<sup>2</sup> = a<sup>2</sup> + 2ab + b<sup>2</sup>
</p>
Note: <del> and <ins> are block or inline depending on context. They can wrap paragraphs or be inline within text.

6. Abbreviations and Data (<abbr>, <data>, <var>, <time>)

Element Purpose Key Attribute Display
<abbr> Abbreviation or acronym title (full form) Dotted underline (tooltip on hover)
<data> Machine-readable content value (machine format) Normal text (inline)
<var> Variable/mathematical placeholder None Italic
<time> Date/time (covered in 2.5) datetime Normal text (inline)
<dfn> Defining instance of term None Italic
Abbreviation Best Practices:
  • Always include title attribute
  • Expand on first use in article
  • Use for both abbreviations and acronyms
  • Title shows on hover (desktop)
  • Improves accessibility for screen readers
Data Element Usage:
  • Links human-readable to machine-readable
  • Use for product codes, IDs, values
  • value attribute is machine format
  • Content is human-readable display
  • Useful for sorting, filtering

Example: Abbreviations and data elements

<!-- Abbreviations with title -->
<p>The <abbr title="World Wide Web">WWW</abbr> was invented by Tim Berners-Lee.</p>
<p>Use <abbr title="HyperText Markup Language">HTML</abbr> for structure.</p>
<p>Meeting at <abbr title="As Soon As Possible">ASAP</abbr>.</p>

<!-- Data element for machine-readable values -->
<p>Product: <data value="SKU-12345">Premium Widget</data></p>
<p>Rating: <data value="4.5">4.5 out of 5 stars</data></p>
<p>Price: <data value="49.99">$49.99</data></p>

<!-- Variable in mathematical context -->
<p>If <var>x</var> = 5, then <var>x</var> + 3 = 8</p>
<p>The formula is <var>f</var>(<var>x</var>) = <var>x</var><sup>2</sup></p>

<!-- Definition term -->
<p><dfn>Responsive Design</dfn> is an approach where design adapts to screen size.</p>
<p>A <dfn><abbr title="Application Programming Interface">API</abbr></dfn> 
   is a set of protocols for building software.</p>

<!-- Combined usage -->
<p>
  <abbr title="Uniform Resource Locator">URL</abbr> format:
  <code><var>protocol</var>://<var>domain</var>/<var>path</var></code>
</p>
Note: <dfn> should be used only for the defining instance of a term (first occurrence where it's explained), not for every mention.

Section 3 Key Takeaways

  • Use <p> for text paragraphs, <div> for layout/styling only
  • <blockquote> for extended quotes with optional cite attribute
  • Three list types: <ul> (unordered), <ol> (ordered), <dl> (description)
  • <pre> preserves whitespace; combine with <code> for code blocks
  • <em> for stress emphasis, <strong> for importance (not just styling)
  • <i> and <b> have semantic meaning (not just italic/bold)
  • <sub> and <sup> for subscript/superscript (formulas, footnotes)
  • <abbr> with title attribute improves accessibility
  • <data> links human-readable text to machine-readable values