Semantic Structure with Proper HTML Elements

Semantic HTML involves using the right elements for the right purpose. This improves accessibility, SEO, and maintainability. Instead of using generic <div> and <span> elements, developers should leverage semantic tags like <header>, <nav>, <main>, <article>, and <footer>.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>My Semantic Page</title>
</head>
<body>
  <header>
    <h1>Welcome to My Website</h1>
    <nav>
      <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Contact</a></li>
      </ul>
    </nav>
  </header>

  <main>
    <article>
      <h2>Article Title</h2>
      <p>This is the content of the article.</p>
    </article>
  </main>

  <footer>
    <p>&copy; 2025 My Website</p>
  </footer>
</body>
</html>
Semantic ElementPurpose
<header>Contains introductory content or navigational links
<nav>Defines a section of navigation links
<main>Represents the primary content of the document
<article>Contains self-contained content, like a blog post
<footer>Contains footer information, like copyright notices

Accessibility Best Practices

Accessibility is a critical component of modern web development. Proper use of HTML attributes and elements ensures that content is usable by everyone, including those who rely on screen readers or other assistive technologies.

<!-- Example of accessible form inputs -->
<label for="username">Username:</label>
<input type="text" id="username" name="username" aria-label="Enter your username" />

<!-- Example of accessible image description -->
<img src="logo.png" alt="Company Logo" />

<!-- Example of accessible table -->
<table>
  <thead>
    <tr>
      <th scope="col">Name</th>
      <th scope="col">Age</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>John Doe</td>
      <td>30</td>
    </tr>
    <tr>
      <td>Jane Smith</td>
      <td>25</td>
    </tr>
  </tbody>
</table>

Responsive Design with HTML and CSS

While HTML itself is not responsible for layout, it can be combined with CSS to create responsive designs. Using semantic elements and proper structure ensures that content is more easily styled and adapted for different screen sizes.

<!-- Basic responsive layout structure -->
<div class="container">
  <aside>
    <h3>Navigation</h3>
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">About</a></li>
    </ul>
  </aside>
  <section>
    <h2>Main Content</h2>
    <p>This is the main content area.</p>
  </section>
</div>

CSS media queries can then be used to adjust layout based on screen size.


Learn more with useful resources