Jak zrobić stronę responsywną w HTML?

Aby stworzyć responsywną stronę internetową w HTML, należy zadbać o to, by wyświetlała się poprawnie na różnych urządzeniach – od smartfonów, przez tablety, aż po komputery stacjonarne. Responsywność polega na dynamicznym dopasowywaniu układu, rozmiarów i elementów strony do szerokości ekranu użytkownika. Osiąga się to głównie dzięki połączeniu HTML, CSS oraz tzw. zapytań medialnych (media queries).

Kluczowe elementy strony responsywnej

Znacznik meta viewport

Na początku w <head> sekcji każdej responsywnej strony należy dodać meta-tagę viewport, dzięki której przeglądarka wyświetli stronę w poprawnej skali na urządzeniach mobilnych:

<meta name="viewport" content="width=device-width, initial-scale=1.0"> 

Struktura HTML

Tworząc prostą strukturę responsywnej strony, można skorzystać z HTML5, dzieląc treść na logiczne sekcje:

<!DOCTYPE html>
<html lang="pl">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Responsywna Strona</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <header>
    <h1>Moja responsywna strona</h1>
  </header>
  <nav>
    <ul>
      <li><a href="#">Strona główna</a></li>
      <li><a href="#">O nas</a></li>
      <li><a href="#">Usługi</a></li>
      <li><a href="#">Kontakt</a></li>
    </ul>
  </nav>
  <main class="grid-container">
    <section class="grid-item">Treść 1</section>
    <section class="grid-item">Treść 2</section>
    <section class="grid-item">Treść 3</section>
  </main>
  <footer> © 2025 Moja Strona </footer>
</body>
</html>

Podstawy stylowania (CSS)

Styl ogólny

Przykładowy arkusz CSS dla responsywności:

body {
  font-family: Arial, sans-serif;
  margin: 0;
  padding: 0;
}
header, nav, main, footer {
  padding: 16px;
  box-sizing: border-box;
}
nav ul {
  display: flex;
  flex-wrap: wrap;
  list-style: none;
  padding: 0;
  margin: 0;
}
nav li {
  margin-right: 20px;
}
.grid-container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-top: 20px;
}
.grid-item {
  background: #e0e0e0;
  padding: 20px;
  border-radius: 8px;
  text-align: center;
}

Zapytania mediowe (media queries)

Zapytania mediowe pozwalają dopasować układ do różnych rozdzielczości:

@media (max-width: 900px) {
  .grid-container {
    grid-template-columns: 1fr 1fr;
  }
}
@media (max-width: 600px) {
  nav ul {
    flex-direction: column;
  }
  .grid-container {
    grid-template-columns: 1fr;
  }
}

Dzięki temu:

  • na dużych ekranach pojawią się trzy kolumny,
  • na tabletach (do 900px) układ zmieni się na dwie kolumny,
  • na smartfonach (do 600px) układ przejdzie w jedną kolumnę, a menu nawigacyjne ułoży się pionowo.

Praktyczne przykłady zastosowań

Przykład 1 – responsywny layout siatki (grid)

Przy użyciu CSS Grid można łatwo tworzyć elastyczne siatki:

<main class="grid-container">
  <section class="grid-item">Treść 1</section>
  <section class="grid-item">Treść 2</section>
  <section class="grid-item">Treść 3</section>
</main>

Układ ten dopasuje się do rozmiaru ekranu (trzy, dwie lub jedna kolumna).

Przykład 2 – responsywne menu nawigacyjne

Proste menu, które na szerokich ekranach wyświetla się poziomo, a na węższych pionowo:

nav ul {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
}
@media (max-width: 600px) {
  nav ul {
    flex-direction: column;
    align-items: center;
  }
  nav li {
    margin: 10px 0;
  }
}

Przykład 3 – obrazy responsywne

Obrazy także powinny być elastyczne:

img {
  max-width: 100%;
  height: auto;
  display: block;
}

Dodatkowe wskazówki

  • Testowanie responsywności – skorzystaj z narzędzi deweloperskich w przeglądarce (zwykle F12 → tryb urządzenia mobilnego);
  • Nie używaj stałych szerokości w pikselach – staraj się korzystać z wartości procentowych, rem lub fr (w Gridzie), aby umożliwić płynne skalowanie;
  • Uprość układ na mniejszych ekranach – rozważ np. ukrywanie drugorzędnych elementów lub przekształcenie menu w hamburgera.

Rozbudowany przykład kodu

Poniżej kompletny szablon responsywnej strony:

<!DOCTYPE html>
<html lang="pl">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Przykład strony responsywnej</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      margin: 0;
    }
    header, footer {
      background: #282c34;
      color: #fff;
      text-align: center;
      padding: 16px;
    }
    nav ul {
      display: flex;
      justify-content: center;
      list-style: none;
      margin: 0;
      padding: 0;
      background: #424652;
    }
    nav li {
      margin: 0 16px;
    }
    nav a {
      color: white;
      text-decoration: none;
      padding: 8px 12px;
      display: block;
    }
    main {
      padding: 24px;
    }
    .grid-container {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 20px;
    }
    .grid-item {
      background: #f4f4f4;
      padding: 20px;
      border-radius: 8px;
      box-shadow: 0 2px 8px #ccc;
    }
    img {
      max-width: 100%;
      height: auto;
      border-radius: 8px;
    }
    @media (max-width: 900px) {
      .grid-container {
        grid-template-columns: 1fr 1fr;
      }
    }
    @media (max-width: 600px) {
      nav ul {
        flex-direction: column;
        align-items: center;
      }
      nav li {
        margin: 10px 0;
      }
      .grid-container {
        grid-template-columns: 1fr;
      }
      main {
        padding: 8px;
      }
    }
  </style>
</head>
<body>
  <header>
    <h1>Responsywna Strona Internetowa</h1>
  </header>
  <nav>
    <ul>
      <li><a href="#">Start</a></li>
      <li><a href="#">O nas</a></li>
      <li><a href="#">Realizacje</a></li>
      <li><a href="#">Kontakt</a></li>
    </ul>
  </nav>
  <main>
    <div class="grid-container">
      <div class="grid-item">
        <h2>Projekt 1</h2>
        <img src="https://placehold.co/300x200" alt="Przykładowy obraz">
        <p>Opis projektu.</p>
      </div>
      <div class="grid-item">
        <h2>Projekt 2</h2>
        <img src="https://placehold.co/300x200" alt="Przykładowy obraz">
        <p>Opis projektu.</p>
      </div>
      <div class="grid-item">
        <h2>Projekt 3</h2>
        <img src="https://placehold.co/300x200" alt="Przykładowy obraz">
        <p>Opis projektu.</p>
      </div>
    </div>
  </main>
  <footer>
    &copy; 2025 Responsywna Strona
  </footer>
</body>
</html>

Dzięki powyższym technikom stworzysz stronę internetową, która będzie wygodna i czytelna na każdym urządzeniu. To nie tylko poprawia doświadczenie użytkownika, ale także pozytywnie wpływa na pozycjonowanie w wyszukiwarkach oraz spełnia nowoczesne standardy projektowania webowego.

Programista i twórca serwisu Creative Coding, absolwent Politechniki Warszawskiej (WEiTI). Od 10+ lat łączy front‑end, grafikę generatywną i narzędzia dla twórców; opublikował 120+ projektów i artykułów, prowadził warsztaty dla 2 000+ uczestników. Pracuje z JavaScriptem, Three.js, P5.js i GLSL, bada wydajność i dokumentuje procesy, tworząc praktyczne przewodniki dla osób łączących kod z obrazem, dźwiękiem i interakcją.
Zostaw komentarz

Komentarze

Brak komentarzy. Dlaczego nie rozpoczniesz dyskusji?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *