DEV Community

Cover image for Embracing HTML Structure & Semantics
Ouma Godwin
Ouma Godwin

Posted on

Embracing HTML Structure & Semantics

In this article, we dive into Semantic HTML - a crucial step towards writing cleaner, more accessible, and SEO-friendly code. Building on the foundational concepts covered in my previous article HTML Basics: A Beginner's Guide, I revisited and upgraded my initial code using semantic elements that clarify the purpose of each section.

What are Semantic Elements?

Semantic HTML means using tags that clearly describe their purpose to both the browser and developers. This enhances accessibility, SEO, and code clarity.
Common Semantic Elements include:

  • <header>: Encapsulates introductory content or navigation links.
  • <nav>: Wraps primary navigation blocks.
  • <main>: Contains the main content unique to the page.
  • <section>: Defines thematic grouping of content.
  • <article>: Represents a self-contained composition.
  • <footer>: Contains author information, copyright details, or related content.

These tags help browsers and assistive technologies interpret a webpage's structure, significantly improving accessibility and SEO.

Benefits of Semantic HTML

  1. Accessibility
    Assistive technologies like screen readers can navigate content more effectively when proper semantic tags are used.

  2. SEO Optimization
    Search engines parse and index content more accurately, potentially improving your site's search ranking.

  3. Maintainability
    A well-structured codebase makes it easier for developers to read, understand, and update the code.

Converting Basic HTML to Semantic HTML

Building on the Basic HTML Page from the previous article I refactored the structure using semantic tags. Here's the updated code:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>My Semantic HTML Page</title>
</head>
<body>
  <header>
    <h1>My Website</h1>
    <nav>
      <a href="#">Home</a>
      <a href="#">About</a>
      <a href="#">Contact</a>
    </nav>
  </header>

  <main>
    <section>
      <h2>Introduction</h2>
      <p>This section introduces the website content.</p>
      <ul>
        <li>Coding</li>
        <li>Design</li>
        <li>Gaming</li>
      </ul>
    </section>

    <article>
      <h2>Featured Article</h2>
      <p>This article provides deeper insights into web development.</p>
    </article>
  </main>

  <footer>
    <p>&copy; 2025 My Website</p>
  </footer>
</body>
</html>
Enter fullscreen mode Exit fullscreen mode

What's Changed:

  1. Header and Navigation
    The page title and navigation links are now wrapped inside a <header> tag, with <nav> enclosing the menu links.

  2. Main Content
    The <main> tag encapsulates the central content, further divided into:

    • A <section> for introductory content.
    • An <article> for the featured write-up.
  3. Footer:
    The footer content is now structured within a <footer> tag for clarity and proper document flow.

Hands-On Exercises

  1. Extend the Page
    Add another <section> within <main> to display a list of your projects. This practice reinforces how different sections can coexist without interfering with each other visually.

  2. Rearrange Elements
    Experiment with moving the <article> or <section> around. Notice that while the visual output may not change significantly, the logical structure of your document becomes clearer.

Additional resources

By transforming our basic HTML into a semantic structure, We're building a web project that is accessible, SEO-friendly and easy to maintain. This approach enhances both web development best practices and the overall user experience-critical for any modern web application.

Stay tuned as I continue my journey towards building a fully interactive game using these core principles!

Top comments (0)