Building a Blog Layout

Create a professional blog layout from scratch! Learn how to structure blog pages with semantic HTML, organize content effectively, and build responsive sidebars.

Why Blog Layout Structure Matters

A well-structured blog layout improves readability, SEO, and user experience. Proper semantic HTML helps search engines understand your content hierarchy and makes your blog accessible to all users including those using screen readers.

Key elements of a great blog layout:

Basic Blog Structure

Here’s the complete HTML structure for a blog:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Blog - Web Development Tips</title>
<meta name="description" content="Learn web development through tutorials and guides">
</head>
<body>
<!-- Site Header -->
<header class="site-header">
  <div class="container">
    <h1 class="site-title">My Blog</h1>
    <p class="site-tagline">Web Development Tips & Tutorials</p>
  </div>
</header>

<!-- Main Navigation -->
<nav class="main-nav">
  <div class="container">
    <ul>
      <li><a href="/">Home</a></li>
      <li><a href="/tutorials">Tutorials</a></li>
      <li><a href="/about">About</a></li>
      <li><a href="/contact">Contact</a></li>
    </ul>
  </div>
</nav>

<!-- Main Content Area -->
<main class="container">
  <div class="content-wrapper">
    <!-- Blog Posts -->
    <section class="posts">
      <!-- Individual blog posts go here -->
    </section>

    <!-- Sidebar -->
    <aside class="sidebar">
      <!-- Widgets go here -->
    </aside>
  </div>
</main>

<!-- Site Footer -->
<footer class="site-footer">
  <div class="container">
    <p>&copy; 2025 My Blog. All rights reserved.</p>
  </div>
</footer>
</body>
</html>

This structure uses semantic HTML5 elements for better accessibility and SEO.

Creating Blog Post Cards

Build attractive blog post preview cards:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Blog Posts</title>
<style>
  .posts {
    display: flex;
    flex-direction: column;
    gap: 30px;
  }
  
  .post-card {
    display: grid;
    grid-template-columns: 300px 1fr;
    gap: 25px;
    padding: 25px;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    transition: box-shadow 0.3s;
  }
  
  .post-card:hover {
    box-shadow: 0 5px 20px rgba(0,0,0,0.1);
  }
  
  .post-thumbnail {
    width: 100%;
    height: 200px;
    object-fit: cover;
    border-radius: 6px;
  }
  
  .post-content h2 {
    margin: 0 0 10px 0;
    font-size: 1.75rem;
    line-height: 1.3;
  }
  
  .post-content h2 a {
    color: #333;
    text-decoration: none;
    transition: color 0.3s;
  }
  
  .post-content h2 a:hover {
    color: #4CAF50;
  }
  
  .post-meta {
    display: flex;
    gap: 20px;
    color: #666;
    font-size: 0.9rem;
    margin-bottom: 15px;
  }
  
  .post-meta span {
    display: flex;
    align-items: center;
    gap: 5px;
  }
  
  .post-excerpt {
    color: #555;
    line-height: 1.6;
    margin-bottom: 15px;
  }
  
  .post-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 15px;
  }
  
  .tag {
    background: #f0f0f0;
    padding: 5px 12px;
    border-radius: 15px;
    font-size: 0.85rem;
    text-decoration: none;
    color: #666;
    transition: background 0.3s;
  }
  
  .tag:hover {
    background: #e0e0e0;
  }
  
  .read-more {
    display: inline-block;
    color: #4CAF50;
    text-decoration: none;
    font-weight: bold;
    transition: color 0.3s;
  }
  
  .read-more:hover {
    color: #45a049;
  }
  
  @media (max-width: 768px) {
    .post-card {
      grid-template-columns: 1fr;
    }
  }
</style>
</head>
<body>
<section class="posts">
  <!-- Blog Post 1 -->
  <article class="post-card">
    <img 
      src="post1-thumbnail.jpg" 
      alt="Web development workspace"
      class="post-thumbnail">
    
    <div class="post-content">
      <h2>
        <a href="/posts/getting-started-with-html">
          Getting Started with HTML: A Beginner's Guide
        </a>
      </h2>
      
      <div class="post-meta">
        <span>📅 January 8, 2025</span>
        <span>👤 Jane Smith</span>
        <span>⏱️ 5 min read</span>
      </div>
      
      <p class="post-excerpt">
        Learn the fundamentals of HTML and start building your first website.
        This comprehensive guide covers everything you need to know to get started
        with web development.
      </p>
      
      <div class="post-tags">
        <a href="/tag/html" class="tag">HTML</a>
        <a href="/tag/beginners" class="tag">Beginners</a>
        <a href="/tag/tutorial" class="tag">Tutorial</a>
      </div>
      
      <a href="/posts/getting-started-with-html" class="read-more">
        Read More →
      </a>
    </div>
  </article>
  
  <!-- Blog Post 2 -->
  <article class="post-card">
    <img 
      src="post2-thumbnail.jpg" 
      alt="CSS styling examples"
      class="post-thumbnail">
    
    <div class="post-content">
      <h2>
        <a href="/posts/mastering-css-flexbox">
          Mastering CSS Flexbox for Responsive Layouts
        </a>
      </h2>
      
      <div class="post-meta">
        <span>📅 January 6, 2025</span>
        <span>👤 John Doe</span>
        <span>⏱️ 8 min read</span>
      </div>
      
      <p class="post-excerpt">
        Flexbox makes creating flexible and responsive layouts easier than ever.
        Learn how to use Flexbox properties to build modern web layouts with
        practical examples.
      </p>
      
      <div class="post-tags">
        <a href="/tag/css" class="tag">CSS</a>
        <a href="/tag/layout" class="tag">Layout</a>
        <a href="/tag/responsive" class="tag">Responsive</a>
      </div>
      
      <a href="/posts/mastering-css-flexbox" class="read-more">
        Read More →
      </a>
    </div>
  </article>
  
  <!-- Blog Post 3 -->
  <article class="post-card">
    <img 
      src="post3-thumbnail.jpg" 
      alt="JavaScript code on screen"
      class="post-thumbnail">
    
    <div class="post-content">
      <h2>
        <a href="/posts/javascript-fundamentals">
          JavaScript Fundamentals Every Developer Should Know
        </a>
      </h2>
      
      <div class="post-meta">
        <span>📅 January 4, 2025</span>
        <span>👤 Sarah Johnson</span>
        <span>⏱️ 12 min read</span>
      </div>
      
      <p class="post-excerpt">
        Master the core concepts of JavaScript including variables, functions,
        objects, and more. Essential knowledge for anyone serious about web
        development.
      </p>
      
      <div class="post-tags">
        <a href="/tag/javascript" class="tag">JavaScript</a>
        <a href="/tag/programming" class="tag">Programming</a>
        <a href="/tag/fundamentals" class="tag">Fundamentals</a>
      </div>
      
      <a href="/posts/javascript-fundamentals" class="read-more">
        Read More →
      </a>
    </div>
  </article>
</section>
</body>
</html>

Each post card includes a thumbnail, title, metadata, excerpt, tags, and a call-to-action link.

Building a Sidebar with Widgets

Create a functional sidebar with common blog widgets:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Blog Sidebar</title>
<style>
  .sidebar {
    display: flex;
    flex-direction: column;
    gap: 30px;
  }
  
  .widget {
    background: #f8f9fa;
    padding: 25px;
    border-radius: 8px;
    border: 1px solid #e9ecef;
  }
  
  .widget-title {
    margin: 0 0 20px 0;
    font-size: 1.25rem;
    color: #333;
    border-bottom: 2px solid #4CAF50;
    padding-bottom: 10px;
  }
  
  /* Search widget */
  .search-form {
    display: flex;
    gap: 10px;
  }
  
  .search-form input {
    flex: 1;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 1rem;
  }
  
  .search-form button {
    padding: 10px 20px;
    background: #4CAF50;
    color: white;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    transition: background 0.3s;
  }
  
  .search-form button:hover {
    background: #45a049;
  }
  
  /* Category list */
  .category-list,
  .archive-list {
    list-style: none;
    padding: 0;
    margin: 0;
  }
  
  .category-list li,
  .archive-list li {
    margin-bottom: 10px;
  }
  
  .category-list a,
  .archive-list a {
    display: flex;
    justify-content: space-between;
    padding: 8px 12px;
    background: white;
    border-radius: 4px;
    text-decoration: none;
    color: #555;
    transition: all 0.3s;
  }
  
  .category-list a:hover,
  .archive-list a:hover {
    background: #4CAF50;
    color: white;
  }
  
  .post-count {
    background: #e9ecef;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.85rem;
  }
  
  .category-list a:hover .post-count,
  .archive-list a:hover .post-count {
    background: rgba(255,255,255,0.3);
  }
  
  /* Recent posts widget */
  .recent-posts-list {
    list-style: none;
    padding: 0;
    margin: 0;
  }
  
  .recent-posts-list li {
    margin-bottom: 20px;
    padding-bottom: 20px;
    border-bottom: 1px solid #dee2e6;
  }
  
  .recent-posts-list li:last-child {
    border-bottom: none;
    margin-bottom: 0;
    padding-bottom: 0;
  }
  
  .recent-post-title {
    display: block;
    margin-bottom: 5px;
    text-decoration: none;
    color: #333;
    font-weight: 500;
    transition: color 0.3s;
  }
  
  .recent-post-title:hover {
    color: #4CAF50;
  }
  
  .recent-post-date {
    font-size: 0.85rem;
    color: #666;
  }
  
  /* Tag cloud */
  .tag-cloud {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
  }
  
  .tag-cloud a {
    padding: 6px 14px;
    background: white;
    border-radius: 15px;
    text-decoration: none;
    color: #555;
    font-size: 0.9rem;
    transition: all 0.3s;
  }
  
  .tag-cloud a:hover {
    background: #4CAF50;
    color: white;
  }
</style>
</head>
<body>
<aside class="sidebar">
  <!-- Search Widget -->
  <div class="widget">
    <h3 class="widget-title">Search</h3>
    <form class="search-form" action="/search" method="get">
      <input 
        type="search" 
        name="q" 
        placeholder="Search articles..."
        required>
      <button type="submit">Search</button>
    </form>
  </div>
  
  <!-- Categories Widget -->
  <div class="widget">
    <h3 class="widget-title">Categories</h3>
    <ul class="category-list">
      <li>
        <a href="/category/html">
          HTML
          <span class="post-count">24</span>
        </a>
      </li>
      <li>
        <a href="/category/css">
          CSS
          <span class="post-count">18</span>
        </a>
      </li>
      <li>
        <a href="/category/javascript">
          JavaScript
          <span class="post-count">32</span>
        </a>
      </li>
      <li>
        <a href="/category/tutorials">
          Tutorials
          <span class="post-count">45</span>
        </a>
      </li>
      <li>
        <a href="/category/tips">
          Tips & Tricks
          <span class="post-count">27</span>
        </a>
      </li>
    </ul>
  </div>
  
  <!-- Recent Posts Widget -->
  <div class="widget">
    <h3 class="widget-title">Recent Posts</h3>
    <ul class="recent-posts-list">
      <li>
        <a href="/post/css-grid-guide" class="recent-post-title">
          Complete Guide to CSS Grid
        </a>
        <span class="recent-post-date">January 8, 2025</span>
      </li>
      <li>
        <a href="/post/responsive-design" class="recent-post-title">
          Responsive Web Design Principles
        </a>
        <span class="recent-post-date">January 6, 2025</span>
      </li>
      <li>
        <a href="/post/javascript-promises" class="recent-post-title">
          Understanding JavaScript Promises
        </a>
        <span class="recent-post-date">January 4, 2025</span>
      </li>
      <li>
        <a href="/post/html-forms" class="recent-post-title">
          Building Accessible HTML Forms
        </a>
        <span class="recent-post-date">January 2, 2025</span>
      </li>
    </ul>
  </div>
  
  <!-- Tag Cloud Widget -->
  <div class="widget">
    <h3 class="widget-title">Popular Tags</h3>
    <div class="tag-cloud">
      <a href="/tag/html">HTML</a>
      <a href="/tag/css">CSS</a>
      <a href="/tag/javascript">JavaScript</a>
      <a href="/tag/responsive">Responsive</a>
      <a href="/tag/flexbox">Flexbox</a>
      <a href="/tag/grid">Grid</a>
      <a href="/tag/forms">Forms</a>
      <a href="/tag/accessibility">Accessibility</a>
      <a href="/tag/seo">SEO</a>
      <a href="/tag/performance">Performance</a>
    </div>
  </div>
  
  <!-- Archives Widget -->
  <div class="widget">
    <h3 class="widget-title">Archives</h3>
    <ul class="archive-list">
      <li>
        <a href="/2025/01">
          January 2025
          <span class="post-count">8</span>
        </a>
      </li>
      <li>
        <a href="/2024/12">
          December 2024
          <span class="post-count">12</span>
        </a>
      </li>
      <li>
        <a href="/2024/11">
          November 2024
          <span class="post-count">10</span>
        </a>
      </li>
    </ul>
  </div>
</aside>
</body>
</html>

Sidebars provide navigation, search functionality, and quick access to popular content.

Single Blog Post Layout

Create a layout for individual blog posts:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Blog Post Title | My Blog</title>
<style>
  .single-post {
    max-width: 800px;
    margin: 0 auto;
    padding: 40px 20px;
  }
  
  .post-header {
    margin-bottom: 40px;
    text-align: center;
  }
  
  .post-header h1 {
    font-size: 2.5rem;
    line-height: 1.2;
    margin: 0 0 20px 0;
    color: #333;
  }
  
  .post-meta {
    display: flex;
    justify-content: center;
    gap: 30px;
    color: #666;
    margin-bottom: 20px;
  }
  
  .post-featured-image {
    width: 100%;
    height: auto;
    border-radius: 8px;
    margin-bottom: 40px;
  }
  
  .post-content {
    font-size: 1.125rem;
    line-height: 1.8;
    color: #333;
  }
  
  .post-content h2 {
    margin: 40px 0 20px 0;
    font-size: 2rem;
    color: #333;
  }
  
  .post-content h3 {
    margin: 30px 0 15px 0;
    font-size: 1.5rem;
    color: #444;
  }
  
  .post-content p {
    margin-bottom: 20px;
  }
  
  .post-content ul,
  .post-content ol {
    margin-bottom: 20px;
    padding-left: 30px;
  }
  
  .post-content li {
    margin-bottom: 10px;
  }
  
  .post-content code {
    background: #f5f5f5;
    padding: 2px 6px;
    border-radius: 3px;
    font-family: 'Courier New', monospace;
    font-size: 0.9em;
  }
  
  .post-content pre {
    background: #f5f5f5;
    padding: 20px;
    border-radius: 6px;
    overflow-x: auto;
    margin-bottom: 20px;
  }
  
  .post-content blockquote {
    border-left: 4px solid #4CAF50;
    padding-left: 20px;
    margin: 30px 0;
    font-style: italic;
    color: #555;
  }
  
  .post-footer {
    margin-top: 60px;
    padding-top: 30px;
    border-top: 2px solid #e9ecef;
  }
  
  .post-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 30px;
  }
  
  .post-tag {
    background: #f0f0f0;
    padding: 8px 16px;
    border-radius: 20px;
    text-decoration: none;
    color: #555;
    transition: all 0.3s;
  }
  
  .post-tag:hover {
    background: #4CAF50;
    color: white;
  }
  
  .author-bio {
    display: flex;
    gap: 20px;
    padding: 30px;
    background: #f8f9fa;
    border-radius: 8px;
    margin-bottom: 40px;
  }
  
  .author-avatar {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    object-fit: cover;
  }
  
  .author-info h4 {
    margin: 0 0 10px 0;
    font-size: 1.25rem;
  }
  
  .author-info p {
    margin: 0;
    color: #666;
    line-height: 1.6;
  }
  
  .post-navigation {
    display: flex;
    justify-content: space-between;
    gap: 20px;
  }
  
  .nav-link {
    flex: 1;
    padding: 20px;
    background: #f8f9fa;
    border-radius: 8px;
    text-decoration: none;
    color: #333;
    transition: background 0.3s;
  }
  
  .nav-link:hover {
    background: #e9ecef;
  }
  
  .nav-link.prev::before {
    content: '← ';
  }
  
  .nav-link.next {
    text-align: right;
  }
  
  .nav-link.next::after {
    content: ' →';
  }
  
  .nav-label {
    display: block;
    font-size: 0.85rem;
    color: #666;
    margin-bottom: 5px;
  }
</style>
</head>
<body>
<article class="single-post">
  <!-- Post Header -->
  <header class="post-header">
    <h1>Getting Started with HTML: A Complete Beginner's Guide</h1>
    
    <div class="post-meta">
      <span>📅 Published: January 8, 2025</span>
      <span>👤 By Jane Smith</span>
      <span>⏱️ 12 min read</span>
    </div>
    
    <img 
      src="featured-image.jpg" 
      alt="Web development workspace with laptop"
      class="post-featured-image">
  </header>
  
  <!-- Post Content -->
  <div class="post-content">
    <p>
      HTML (HyperText Markup Language) is the foundation of all websites.
      Whether you want to build a personal blog, portfolio, or the next
      great web application, HTML is where your journey begins.
    </p>
    
    <h2>What is HTML?</h2>
    <p>
      HTML is a markup language that structures content on the web.
      Think of it as the skeleton of a website—it defines what goes where.
    </p>
    
    <blockquote>
      "HTML is the language we use to tell browsers what content to display
      and how it should be organized."
    </blockquote>
    
    <h2>Basic HTML Structure</h2>
    <p>Every HTML document follows this basic structure:</p>
    
    <pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
  &lt;meta charset="UTF-8"&gt;
  &lt;title&gt;Page Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;h1&gt;Hello World!&lt;/h1&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
    
    <h3>Key HTML Elements</h3>
    <ul>
      <li><code>&lt;head&gt;</code> — Contains metadata about the document</li>
      <li><code>&lt;body&gt;</code> — Contains the visible content</li>
      <li><code>&lt;h1&gt;</code> to <code>&lt;h6&gt;</code> — Heading levels</li>
      <li><code>&lt;p&gt;</code> — Paragraphs of text</li>
      <li><code>&lt;a&gt;</code> — Links to other pages</li>
    </ul>
    
    <h2>Next Steps</h2>
    <p>
      Now that you understand HTML basics, practice creating your own HTML
      documents. Start simple and gradually add more elements as you learn.
    </p>
  </div>
  
  <!-- Post Footer -->
  <footer class="post-footer">
    <!-- Tags -->
    <div class="post-tags">
      <a href="/tag/html" class="post-tag">HTML</a>
      <a href="/tag/beginners" class="post-tag">Beginners</a>
      <a href="/tag/tutorial" class="post-tag">Tutorial</a>
      <a href="/tag/web-development" class="post-tag">Web Development</a>
    </div>
    
    <!-- Author Bio -->
    <div class="author-bio">
      <img 
        src="author-avatar.jpg" 
        alt="Jane Smith"
        class="author-avatar">
      <div class="author-info">
        <h4>About Jane Smith</h4>
        <p>
          Jane is a web developer and technical writer with 5 years of
          experience. She loves teaching others and making complex topics
          easy to understand.
        </p>
      </div>
    </div>
    
    <!-- Post Navigation -->
    <nav class="post-navigation">
      <a href="/post/previous-post" class="nav-link prev">
        <span class="nav-label">Previous Post</span>
        Introduction to Web Development
      </a>
      <a href="/post/next-post" class="nav-link next">
        <span class="nav-label">Next Post</span>
        CSS Styling Basics
      </a>
    </nav>
  </footer>
</article>
</body>
</html>

A well-structured single post layout enhances readability and keeps readers engaged.

Complete Blog Layout with Grid

Put everything together in a complete responsive layout:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Blog - Web Development</title>
<style>
  * {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
  }
  
  body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    line-height: 1.6;
    color: #333;
  }
  
  .container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
  }
  
  /* Header */
  .site-header {
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    color: white;
    padding: 60px 0;
    text-align: center;
  }
  
  .site-title {
    font-size: 3rem;
    margin-bottom: 10px;
  }
  
  .site-tagline {
    font-size: 1.25rem;
    opacity: 0.9;
  }
  
  /* Navigation */
  .main-nav {
    background: white;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
    position: sticky;
    top: 0;
    z-index: 100;
  }
  
  .main-nav ul {
    list-style: none;
    display: flex;
    justify-content: center;
    gap: 40px;
  }
  
  .main-nav a {
    display: block;
    padding: 20px 0;
    text-decoration: none;
    color: #333;
    font-weight: 500;
    transition: color 0.3s;
  }
  
  .main-nav a:hover {
    color: #4CAF50;
  }
  
  /* Main Content Layout */
  .content-wrapper {
    display: grid;
    grid-template-columns: 1fr 350px;
    gap: 40px;
    padding: 40px 0;
  }
  
  /* Footer */
  .site-footer {
    background: #333;
    color: white;
    text-align: center;
    padding: 40px 20px;
    margin-top: 60px;
  }
  
  /* Responsive */
  @media (max-width: 968px) {
    .content-wrapper {
      grid-template-columns: 1fr;
    }
    
    .sidebar {
      order: -1;
    }
  }
  
  @media (max-width: 768px) {
    .site-title {
      font-size: 2rem;
    }
    
    .main-nav ul {
      flex-wrap: wrap;
      gap: 20px;
    }
    
    .post-card {
      grid-template-columns: 1fr !important;
    }
  }
</style>
</head>
<body>
<!-- Site Header -->
<header class="site-header">
  <div class="container">
    <h1 class="site-title">My Blog</h1>
    <p class="site-tagline">Web Development Tips & Tutorials</p>
  </div>
</header>

<!-- Main Navigation -->
<nav class="main-nav">
  <div class="container">
    <ul>
      <li><a href="/">Home</a></li>
      <li><a href="/tutorials">Tutorials</a></li>
      <li><a href="/about">About</a></li>
      <li><a href="/contact">Contact</a></li>
    </ul>
  </div>
</nav>

<!-- Main Content -->
<main class="container">
  <div class="content-wrapper">
    <!-- Blog Posts Section -->
    <section class="posts">
      <!-- Post cards go here (from previous example) -->
    </section>

    <!-- Sidebar -->
    <aside class="sidebar">
      <!-- Sidebar widgets go here (from previous example) -->
    </aside>
  </div>
</main>

<!-- Site Footer -->
<footer class="site-footer">
  <div class="container">
    <p>&copy; 2025 My Blog. All rights reserved.</p>
    <p>Built with HTML, CSS, and passion for web development</p>
  </div>
</footer>
</body>
</html>

This complete layout is responsive and works beautifully on all devices!

Common Mistakes to Avoid

Mistake 1: Not Using Semantic HTML

Problematic example:

<div class="header">
  <div class="title">My Blog</div>
</div>
<div class="post">
  <div class="post-title">Article Title</div>
</div>

Improved example:

<header>
  <h1>My Blog</h1>
</header>
<article>
  <h2>Article Title</h2>
</article>

Why: Semantic HTML improves SEO and accessibility.

Mistake 2: Fixed Width Layouts

Problematic example:

.container {
  width: 1200px;
}

Improved example:

.container {
  max-width: 1200px;
  padding: 0 20px;
}

Why: Fixed widths break on smaller screens. Use max-width with padding.

Mistake 3: Missing Mobile Optimization

Problematic example: Not testing on mobile devices

Improved example: Use responsive design with mobile-first approach

Why: Over 50% of web traffic is mobile!

Mistake 4: Poor Typography

Problematic example:

body {
  font-size: 12px;
  line-height: 1.2;
}

Improved example:

body {
  font-size: 16px;
  line-height: 1.6;
}

Why: Good typography makes content readable and enjoyable.

Try It Yourself

Ready to build your own blog? Try these challenges:

Challenge 1: Basic Blog Homepage (Beginner)

Create a blog homepage with:

Build a complete blog featuring:

Challenge 3: Advanced Blog Platform (Advanced)

Create a professional blog with:

Bonus: Add a “reading progress” indicator that shows how far the user has scrolled through an article!

What You Learned

Congratulations! You now know how to:

Next Steps

Now that you can build blog layouts, explore these related tutorials:

Ready to build your blog? Start creating in our interactive HTML editor!

Back to all tutorials