CSS - responsywny układ strony

Responsywny układ strony to taki, który zmienia swoje atrybuty zdefiniowane za pomocą stylów CSS w zależności od różnych czynników.
Najczęstszym czynnikiem jest szerokość strony przeglądarki.
Zadziałąją one, gdy dokument HTML zostanie wyświetlony w oknie przeglądarki o określonej szerokości (komputer, tablet, telefon).

Responsywny projekt strony pozwala za pomocą kodu HTML i stylów CSS zmienić rozmiar zawartości, przesunąć określoną zawartość lub ukryć ją, tak aby strona dobrze wyglądała na dowolnym urządzeniu.

W HTML5 za pomocą znacznika <meta> możliwe jest dołączenie metatagu viewport i przejęcie kontroli nad widocznym dla użytkownika obszarem wyświetlania strony.
Do strony należy dołączyć następujący zapis:

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

Spowoduje on poprawne wyświetlanie strony na urządzeniach mobilnych.

Zdefiniowany w znaczniku <meta> element "viewport" udostępnia przeglądarcepolecenia dotyczące kontrolowania wymiarów strony i skalowania.

Składnia width=device-width określa szerokość strony, która powinna odpowiadać szerokości ekranu urządzenia, gdzie będzie wyświetlana.

Część initial-scale=1.0 ustawia początkowy poziom powiększenia w momencie, gdy strona jest otwierana przez przeglądarkę.

Poprawne obliczanie wymiarów obiektów uzyskamy stosując, na początku skryptu css reguły:

* {
     margin:0;
     padding:0;
     box-sizing: border-box;
}

Dodając regułę @media, spowodujemy włączenie określonych atrybutów CSS tylko wtedy, gdy spełnione zostaną wymagane warunki.
Stosujemy właściwość min-width lub max-width.

Przykład:
Zmiana koloru tła dla smartfonów, gdy szerokość strony jest mniejsza od 576 pikseli.

body {background-color:#000;}
@media only screen and (max-width: 576px) {
     body {background-color:#aaa;}
}

przykład: zmiana tła przy 576px

Zmiana koloru tła dla komputerów desktopowych, gdy szerokość strony jest większa od 1200 pikseli.

body {background-color:#000;}
@media only screen and (min-width: 1200px) {
     body {background-color:#aaa;}
}


Strona, która będzie wyświetlana na urządzeniach mobilnych, powinna być zbudowana na bazie jednej kolumny.
Zapewni to poprawne skalowanie strony i dopasowanie szerokości kolumny do ekranu urządzenia wyświetlającego.

Przykład:

HTML

<div style="overflow:auto">
	<div class="left">
		<h2>Lewa</h2>
	</div>

	<div class="main">
		<h2>Strona główna</h2>
	</div>

	<div class="right">
		<h2>Prawa</h2>
	</div>
</div>

CSS

		
.left {
	float:left;
	width:20%;
}

.main {
	float:left;
	width:60%;
}

.right {
	float:left;
	width:20%;
}

@media only screen and (max-width:768px) {
	.left, .main, .right {
		width:100%;
	}
}

przykład zmiany układu strony


Złożone projekty powinny zawierać kilka punktów przerwania dla ekranów:

  • bardzo małych - szerokość ekranu < 576px
  • małych (telefon) - szerokość ekranu >= 576px
  • średnich (tablet) - szerokość ekranu >= 768px
  • dużych (laptop) - szerokość ekranu >= 992px
  • bardzo dużych (komputery stacjonarne) - szerokość ekranu >= 1200px
Przykład css: przykład strony o kilku kolumnach

obrazki

Jeżeli na responsywnej stronie występują obrazki, powinny być automatycznie skalowane wraz z szerokością strony.
Szerokość obrazków i innych grafik powinna być podawana w wartościach procentowych. Gdy nie jest to możliwe, należy taki element umieścić w kontenarze i jemu nadać wartości procentowe.

W przypadku gdy na stronie pojawiają się złożone elementy graficzne, które w wyniku skalowania stają się niewyraźne, jedynym rozwiązaniem jest ich ukrywanie i zastępowanie mniejszymi odpowiednikami.

element <picture>

Zastosowanie znacznika <picture> do wyświetlania obrazków pozwala na większą elastyczność i wybór z dostępnych obrazków tego, który najlepiej zaprezentuje się na stronie.
Zamiast jednego obrazka, który jest skalowany w zależności od sposobu jego wyświetlania na stronie, można użyć wielu obrazków. Ten, który najlepiej odpowiada parametrom ekranu, zostanie wyświetlony.

W elemencie <picture> występują dwa rodzaje znaczników: <source> i <img>.

Znacznik <source> posiada następujące atrybuty:

  • srcset - określa URL obrazka do wyświetlenia (wymagany);
  • media - definiuje zapytanie o media, które są definiowane w regule CSS @media;
  • sizes - określa szerokość (width), występuje w zaptyaniu o media i określa ograniczenia narzucone na szerokość ekranu;
  • type - określa typ danych;

Przykład:

<picture>
	<source srcset="obrazek1.jpg" media="(max-width: 600px)">
	<source srcset="obrazek2.jpg">
	<img src="obrazek2.jpg" alt="obrazek">
</picture>

Przeglądarka wybierze pierwszy obrazek z listy elementów (<source>), który pasuje do zdefiniowanego zapytania o media, i go wyświetli.

Znacznik <img> jest wymagany jako ostatni element w bloku deklaracji <picture>. Służy również do osiągnięcia kompatybilności wstecznej i pozwala na wyświetlenie obrazka w przeglądarkach, które nie obsługują elementu <picture>.

przykład zmiany obrazka

tabele

Dla tabel wyświetlanych na responsywnej stronie można zdefiniować pasek przewijania, który zostanie wyświetlony, gdy szerokość ekranu będzie zbyt mała, aby wyświetlić całą zawartość tabeli.
Żeby uzyskać podany efekt, tabelę należy umieścić w kontenerze (np. blok <div>) i nadać mu atrybut overflow-x: auto.

przykład przewijanej tabeli

tekst

Wielkość tekstu może być ustalana przy zastosowaniu jednostki "vw", odnoszącej się do szerokości strony.
Jeśli szerokość okna wynosi np. 1200px i wprowadzimy:

<h1 style="font-size:10vw">napis na stronie</h1>
Wysokość tekstu wyniesie 120px.

Zmiana szerokości strony spowoduje zmianę wielkości tekstu.

przykład zmiany wielkości tekstu

zadania - strony responsywne

responsywny układ strony

Zadanie 1
  • Zaprojektuj dokument html, który będzie zawierał nagłówek z treścią "responsywne kolumny" oraz dwa obszary div.
  • Dokument zapisz (w folderze css3) pod nazwą index1.html (plik stylu styl1.css) .
  • Właściwości:
    • dla szerokości strony minimum 1200 px występuje jeden wiersz i dwie kolumny, kolumny wyśrodkowane
    • dla szerokości strony mniejszych niż 1200 px występują dwa wiersze i jedna kolumna, margines poziomy 20px;
Zadanie 2
  • Wykorzystaj pliki z zadania css1
  • Dla strony wzór z zadania css1 dodaj responsywny opis stylu, aby dla małych urządzeń
    (szerokość mniejsza niż 576 pikseli) wszystko było wyświetlane w jednej kolumnie.
  • Dokument zapisz (w folderze css3) pod nazwą index2.html (plik stylu styl2.css) .
Zadanie 3
  • Wykorzystaj pliki z zadania html 3 - tabele wzór z zadania plan lekcji
  • Tabela ma stałą szerokość wynoszącą 1000px, znajduje się na środku strony.
  • Zachowana jest zmiana koloru wierszy.
  • Przy szerokości strony mniejszej niż 1000px pojawia się pasek przewijania poziomego tylko dla tabeli
  • Dokument zapisz (w folderze css3) pod nazwą index3.html (plik stylu styl3.css).
Zadanie 4
  • Temat: "Wybrane miasto, kraina geograficzna w Polsce"
  • Wyświetlanie na: komputerach stacjonarnych (min 1200px), tabletach (min 768px) oraz telefonach
  • Struktura strony:
    • nagłówek - zmiana wielkości tekstu przy zmianie urządzenia,
    • część główna - tekst informacyjny podzielony na: 4, 2, 1 kolumnę.
    • grafika - 4, 2, 1 zdjęcie dostosowane do urządzenia,
    • stopka - informacje o autorze, wielkość czcionki dostosowana do urządzenia.
  • Dokument zapisz (w folderze css3) pod nazwą index4.html (plik stylu styl4.css).
Projekt i wykonanie: Ryszard Rogacz© 1999−2024