Temat: Właściwość display i jej wartości
Właściwość display określa, jak elementy HTML są prezentowane w przeglądarce. Dzięki zrozumieniu jej działania i dostępnych wartości będziesz mógł tworzyć bardziej elastyczne i złożone układy stron, kontrolować widoczność elementów oraz wpływać na interakcje między nimi.
Dlaczego właściwość display jest ważna?
- Kontrola układu: Pozwala decydować, czy elementy są wyświetlane w linii, jako bloki czy w innych formach.
- Widoczność elementów: Umożliwia ukrywanie i pokazywanie elementów bez ich usuwania z DOM.
- Tworzenie zaawansowanych układów: Dzięki wartościom takim jak
flexczygridmożna tworzyć responsywne i nowoczesne układy stron. - Optymalizacja interfejsu: Pozwala na dostosowanie interakcji między elementami, np. kontrolowanie, czy elementy nakładają się na siebie czy też przepływają obok siebie.
Co to jest właściwość display?
Właściwość display określa, jak przeglądarka ma wyświetlać dany element na stronie. Ma ona wpływ na:
- Model pudełkowy elementu.
- Przepływ dokumentu i sposób, w jaki elementy są układane względem siebie.
- Możliwość stosowania pewnych właściwości CSS (np. marginesów, szerokości, wysokości).
Składnia
element {
display: wartość;
}
Podstawowe wartości właściwości display
1. display: block
Opis
- Element jest wyświetlany jako blokowy.
- Zajmuje całą dostępną szerokość rodzica (chyba że zostanie określona inna szerokość).
- Zaczyna się od nowej linii, a następne elementy są umieszczane poniżej.
- Można ustawić szerokość, wysokość, marginesy i wypełnienia.
Przykłady elementów domyślnie blokowych
<div><h1>do<h6><p><ul>,<ol>,<li><section>,<article>
Przykład użycia
<div class="blok">To jest element blokowy.</div>
.blok {
display: block;
width: 80%;
margin: 20px auto;
background-color: #ecf0f1;
}
2. display: inline
Opis
- Element jest wyświetlany w linii z innymi elementami.
- Nie zaczyna się od nowej linii.
- Ignoruje właściwości
widthiheight. - Marginesy i wypełnienia są stosowane tylko w kierunku poziomym (lewo, prawo), a nie pionowym (góra, dół).
Przykłady elementów domyślnie liniowych
<span><a><strong>,<em><img>(uwaga: zachowuje pewne cechy elementów blokowych)
Przykład użycia
<p>
Ten tekst zawiera <span class="podkreslony">podkreślone słowo</span> w środku.
</p>
.podkreslony {
display: inline;
text-decoration: underline;
}
3. display: inline-block
Opis
- Łączy cechy elementów liniowych i blokowych.
- Element jest wyświetlany w linii z innymi elementami, ale można ustawić jego
width,height, marginesy i wypełnienia we wszystkich kierunkach. - Nie zaczyna się od nowej linii.
Przykład użycia
<a href="#" class="przycisk">Kliknij mnie</a>
.przycisk {
display: inline-block;
padding: 10px 20px;
background-color: #3498db;
color: #fff;
text-decoration: none;
}
4. display: none
Opis
- Element nie jest wyświetlany na stronie.
- Nie zajmuje miejsca w układzie strony.
- Jest usuwany z przepływu dokumentu, ale nadal istnieje w kodzie HTML (można do niego odwoływać się np. za pomocą JavaScriptu).
Przykład użycia
<p class="ukryty">Ten tekst jest ukryty i nie będzie widoczny na stronie.</p>
.ukryty {
display: none;
}
Zaawansowane wartości właściwości display
5. display: flex
Opis
- Ustawia element jako kontener flexbox, umożliwiając tworzenie elastycznych i responsywnych układów.
- Dzieci takiego kontenera są automatycznie ustawiane jako elementy flex.
Przykład użycia
<div class="nawigacja">
<a href="#">Strona główna</a>
<a href="#">O nas</a>
<a href="#">Kontakt</a>
</div>
.nawigacja {
display: flex;
justify-content: space-around;
}
6. display: grid
Opis
- Ustawia element jako kontener siatki CSS Grid, pozwalając na tworzenie złożonych układów siatki.
- Dzieci takiego kontenera są umieszczane w zdefiniowanych przez nas wierszach i kolumnach.
Przykład użycia
<div class="galeria">
<div>Obrazek 1</div>
<div>Obrazek 2</div>
<div>Obrazek 3</div>
<!-- Kolejne elementy -->
</div>
.galeria {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
}
7. display: table, display: table-row, display: table-cell
Opis
- Pozwalają na symulowanie zachowania tabel za pomocą elementów innych niż
<table>,<tr>,<td>. - Używane rzadziej, głównie do specyficznych układów.
Przykład użycia
<div class="tabela">
<div class="wiersz">
<div class="komorka">Komórka 1</div>
<div class="komorka">Komórka 2</div>
</div>
</div>
.tabela {
display: table;
width: 100%;
}
.wiersz {
display: table-row;
}
.komorka {
display: table-cell;
border: 1px solid #ccc;
padding: 10px;
}
8. display: inline-flex i display: inline-grid
Opis
- Działają podobnie jak
flexigrid, ale kontener jest wyświetlany w linii z innymi elementami. - Umożliwiają tworzenie elastycznych układów wewnątrz tekstu lub innych elementów liniowych.
Przykład użycia
<span class="mini-galeria">
<img src="obrazek1.jpg" alt="Obrazek 1">
<img src="obrazek2.jpg" alt="Obrazek 2">
</span>
.mini-galeria {
display: inline-flex;
}
.mini-galeria img {
width: 50px;
height: 50px;
margin-right: 5px;
}
Porównanie wartości display
| Wartość | Zajmuje całą szerokość? | Zaczyna nową linię? | Możliwość ustawienia width i height |
Marginesy i wypełnienia |
|---|---|---|---|---|
block |
Tak | Tak | Tak | Wszystkie kierunki |
inline |
Nie | Nie | Nie | Tylko poziome |
inline-block |
Nie | Nie | Tak | Wszystkie kierunki |
none |
Nie wyświetla się | Nie dotyczy | Nie dotyczy | Nie dotyczy |
flex |
Zależy od zawartości | Tak | Tak | Wszystkie kierunki |
inline-flex |
Zależy od zawartości | Nie | Tak | Wszystkie kierunki |
grid |
Zależy od definicji siatki | Tak | Tak | Wszystkie kierunki |
inline-grid |
Zależy od definicji siatki | Nie | Tak | Wszystkie kierunki |
Praktyczne zastosowania
1. Konwersja elementu span na blokowy
Domyślnie element <span> jest liniowy. Jeśli chcemy nadać mu właściwości elementu blokowego:
span.blokowy {
display: block;
}
2. Tworzenie przycisków za pomocą inline-block
Chcąc stworzyć przyciski, które są wyświetlane w linii, ale umożliwiają ustawienie szerokości, wysokości i marginesów:
.przycisk {
display: inline-block;
padding: 10px 20px;
background-color: #27ae60;
color: #fff;
text-decoration: none;
margin: 5px;
}
3. Ukrywanie elementów
Jeśli chcemy tymczasowo ukryć element (np. w przypadku menu mobilnego):
.menu {
display: none;
}
/* Po kliknięciu w ikonę menu, możemy zmienić display za pomocą JavaScriptu */
Dobre praktyki
- Używaj odpowiedniej wartości
displaydla zamierzonego efektu: Jeśli chcesz, aby element był blokowy, użyjdisplay: block; jeśli chcesz, aby element był w linii, ale z możliwością ustawienia wymiarów, użyjdisplay: inline-block. - Unikaj nadmiernego manipulowania
display: Częste zmiany wartościdisplaymogą prowadzić do nieprzewidywalnych efektów, szczególnie w złożonych układach. - Pamiętaj o wpływie na model pudełkowy: Zmiana
displaymoże wpłynąć na sposób, w jaki stosowane są marginesy, wypełnienia i inne właściwości. - Używaj
display: nonez rozwagą: Ukrywanie elementów może wpływać na dostępność strony. Upewnij się, że ważne treści nie są ukrywane przed użytkownikami korzystającymi z czytników ekranu. - Stosuj nowoczesne wartości
display: Warto korzystać zflexigriddo tworzenia responsywnych układów, pamiętając o kompatybilności przeglądarek.
Częste błędy i jak ich unikać
- Stosowanie
display: inlinei próba ustawieniawidthlubheight: Elementy liniowe ignorują te właściwości.
Niepoprawnie:
.element {
display: inline;
width: 100px; /* Ignorowane */
height: 50px; /* Ignorowane */
}
- Zapominanie o wpływie
displayna marginesy i wypełnienia: Elementy liniowe nie stosują marginesów i wypełnień pionowych. - Nadmierne używanie
display: none: Może to prowadzić do problemów z dostępnością i SEO. - Niekompatybilność z przeglądarkami: Starsze przeglądarki mogą nie obsługiwać pewnych wartości, takich jak
grid. Upewnij się, że Twoja strona działa poprawnie w docelowych przeglądarkach. - Niezrozumienie różnic między
inline,blockiinline-block: Prowadzi to do problemów z układem i nieoczekiwanym zachowaniem elementów.
Podsumowanie
W tej lekcji nauczyliśmy się:
- Czym jest właściwość
displayi jak wpływa na sposób wyświetlania elementów na stronie. - Podstawowych wartości
display:block,inline,inline-block,none. - Zaawansowanych wartości
display, takich jakflex,grid,inline-flex,inline-grid. - Jak każda z tych wartości wpływa na model pudełkowy, przepływ dokumentu i interakcje między elementami.
- Praktycznych zastosowań różnych wartości
displayw tworzeniu układów stron. - Dobrych praktyk w korzystaniu z właściwości
displayoraz jak unikać typowych błędów.
Zrozumienie właściwości display jest kluczowe dla efektywnego projektowania układów stron internetowych. Pozwala na kontrolowanie sposobu, w jaki elementy są prezentowane i jak oddziałują ze sobą, co jest niezbędne w tworzeniu responsywnych i interaktywnych interfejsów.
Zadania do samodzielnego wykonania
-
Stwórz menu nawigacyjne:
- Użyj listy
<ul>i elementów<li>do stworzenia menu. - Spraw, aby elementy menu były wyświetlane w linii za pomocą
display: inlinelubdisplay: inline-block. - Dodaj style, takie jak marginesy, tło i efekty najechania myszką.
- Użyj listy
-
Zaprojektuj galerię obrazów:
- Utwórz kontener z
display: flexlubdisplay: grid. - Dodaj kilka obrazów lub elementów zastępczych.
- Ustaw odstępy między elementami i dostosuj układ dla różnych rozmiarów ekranu.
- Utwórz kontener z
-
Eksperymentuj z różnymi wartościami
display:- Wybierz kilka elementów na stronie i zmieniaj ich
displayna różne wartości. - Obserwuj, jak zmienia się układ strony i zachowanie elementów.
- Zanotuj swoje obserwacje i wnioski.
- Wybierz kilka elementów na stronie i zmieniaj ich
Ciekawostka
Czy wiesz, że początkowo projektanci stron internetowych używali tabel (<table>) do tworzenia układów stron? Było to przed wprowadzeniem zaawansowanych właściwości CSS, takich jak display: flex czy display: grid. Obecnie takie podejście jest uważane za przestarzałe i niezalecane, ponieważ utrudnia dostępność strony i jej responsywność.
| Testy przypięte do lekcji | |
|---|---|
| Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się |