HTML <div> and <span> Tags
The <div> and <span> tags are generic container elements used to group and style content using CSS or JavaScript.
<div> Tag (Block-level Container)
The <div> tag is a block-level container. It is used to group larger sections of content such as paragraphs, images, or forms.
<div>
<!-- Block-level content here -->
<h1>Section Title</h1>
<p>Paragraph content</p>
</div>
Common Uses:
- Creating page layouts and sections
- Wrapping multiple elements together
- Applying block-level CSS styles
- Creating containers for flexbox or grid layouts
- Grouping form elements
<span> Tag (Inline-level Container)
The <span> tag is an inline-level container. It is used to style or manipulate small pieces of content inside block-level elements.
<p>This is a <span style="color: red;">highlighted</span> word.</p>
Common Uses:
- Styling a specific word or phrase within text
- Highlighting text within a paragraph
- Inline formatting with CSS or JavaScript
- Targeting specific text for manipulation
- Adding icons or small elements within text
Key Differences
Feature | <div> | <span> |
---|---|---|
Display Type | Block-level | Inline-level |
Default Behavior | Starts on a new line, takes full width | Flows with text content |
Primary Use | Layout and structure | Styling specific text/inline elements |
Can Contain | Other block and inline elements | Only inline elements and text |
Example Use Case | Page sections, card components | Colored text, tooltip triggers |
Practical Examples
Div Example: Card Component
<div class="card">
<div class="card-header">
<h3>Card Title</h3>
</div>
<div class="card-body">
<p>Card content goes here.</p>
</div>
<div class="card-footer">
<button>Action</button>
</div>
</div>
Span Example: Text Formatting
<p>
The <span class="highlight">quick brown fox</span> jumps over
the <span class="underline">lazy dog</span>. The <span class="icon">🐾</span>
represents footprints.
</p>
Best Practices
- Use <div> for layout and structural purposes only
- Use <span> for small text-level formatting or styling
- Avoid excessive nesting of these elements (divitis)
- Prefer semantic HTML elements (<section>, <article>, <nav>, etc.) where appropriate
- Use classes or IDs for styling rather than applying styles directly
- Keep accessibility in mind when using these elements
- Consider CSS Grid or Flexbox for complex layouts instead of nested divs
When to Use Semantic Elements Instead
Instead of <div> | Use | When |
---|---|---|
<div id="header"> | <header> | For page header content |
<div class="nav"> | <nav> | For navigation sections |
<div class="article"> | <article> | For self-contained compositions |
<div id="footer"> | <footer> | For page footer content |