Menu

Obrazki w HTML: jak wstawić obraz przez img, alt i rozmiar

Jak wstawić obrazek w HTML znacznikiem <img>: src i alt, ustawianie rozmiaru przez width i height, responsywne obrazki, przycinanie przez object-fit, podpisy z figure, leniwe wczytywanie i odstęp pod obrazkami.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

Jak wstawić obrazek w HTML

Użyj elementu <img>. src to plik obrazka, alt go opisuje, a width i height podają jego rozmiar w pikselach. <img> to element pusty: nie ma znacznika zamykającego.

src to tutaj małe SVG zapisane w adresie URL (data URI), więc przykład działa offline. Na prawdziwej stronie src to ścieżka do pliku:

srcWczytuje
photo.jpgphoto.jpg z tego samego folderu co plik HTML
images/photo.jpgZ folderu images obok pliku HTML
../photo.jpgZ folderu o poziom wyżej
/images/photo.jpgZ folderu images w katalogu głównym strony
https://example.com/photo.jpgZ innej strony (może się przenieść lub zniknąć)

Na większości serwerów wielkość liter w ścieżkach ma znaczenie: Photo.JPG i photo.jpg to różne pliki.

Tekst alternatywny

Tekst alt zastępuje obrazek. Czytniki ekranu czytają go na głos, a przeglądarka pokazuje go, gdy obrazek nie może się wczytać. Oba obrazki tutaj wskazują pliki, które nie istnieją:

Pierwszy pokazuje swój tekst alternatywny, "Coddy logo", w miejscu obrazka. Drugi ma pusty alt, więc nie ma czego pokazać, a czytniki ekranu go pomijają. Jak pisać alt:

  • Opisz to, co ważne w danym kontekście. "Wykres słupkowy: sprzedaż podwoiła się od marca do czerwca" mówi więcej niż "wykres".
  • Nie zaczynaj od "Obrazek przedstawiający". Czytniki ekranu i tak ogłaszają, że to obrazek.
  • Używaj alt="" dla dekoracji (separator, ozdobnik w tle), żeby czytniki ekranu je pomijały.
  • Nigdy nie pomijaj alt. Bez niego niektóre czytniki ekranu czytają zamiast tego nazwę pliku, np. "IMG podkreślnik 4032 kropka jpg".
  • Przy obrazku w linku opisz cel linku: <a href="/"><img src="logo.svg" alt="Home"></a>.

Ustawianie rozmiaru obrazka

Atrybuty width i height są w pikselach, bez jednostki. Rozmiary z CSS je nadpisują. Najprzydatniejszy CSS dla obrazków to ta para, która pozwala obrazkowi zmniejszać się razem z kontenerem, ale nigdy nie rozciągać ponad naturalną szerokość:

Pierwszy obrazek zachowuje swoje 300 pikseli i wylewa się z pudełka o szerokości 180 pikseli. Drugi zmniejsza się do 180 na 120, zachowując proporcje 3:2. height: auto ma znaczenie: bez tego atrybut height="200" trzymałby obrazek na wysokości 200 pikseli i by go spłaszczył.

Zawsze wpisuj width i height w HTML, nawet dla responsywnych obrazków. Przeglądarka używa ich, żeby zarezerwować odpowiednią ilość miejsca, zanim przyjdzie plik, więc tekst poniżej nie skacze w dół, gdy obrazek się wczyta.

Przycinanie przez object-fit

Gdy obrazek musi wypełnić pudełko o innych proporcjach (kwadratowy awatar z szerokiego zdjęcia, karty o równej wysokości), object-fit decyduje, co dzieje się z nadmiarem:

Źródło to obrazek koła w proporcjach 2:1, pokazany w kwadratowych pudełkach:

  • fill (domyślnie) rozciąga obrazek do pudełka, więc koło staje się owalem.
  • contain mieści cały obrazek w środku, zostawiając puste pasy.
  • cover wypełnia pudełko i przycina nadmiar, zachowując okrągłe koło. To typowy wybór dla miniatur i awatarów.

object-position wybiera, która część zostaje widoczna przy przycinaniu, np. object-position: top dla portretów.

Podpisy z figure i figcaption

Podpis należący do obrazka trafia do <figcaption>, a oba do <figure>. To łączy je dla czytników ekranu, a figure można stylizować jako jedną całość:

Podpis nie zastępuje alt. alt mówi, co pokazuje obrazek; podpis dodaje to, czego potrzebowałby również widzący czytelnik.

Odstęp pod obrazkiem

Obrazek stoi na linii bazowej tekstu jak litera, więc jego kontener zostawia pod nim miejsce na dolne wydłużenia liter takich jak g i y. Obramowanie pokazuje ten odstęp:

W pierwszym obramowaniu pod niebieskim obrazkiem jest biały pasek. display: block na obrazku (drugie pudełko) go usuwa; to samo robi vertical-align: middle, jeśli obrazek musi zostać liniowy.

Leniwe wczytywanie i responsywne źródła

Dla obrazków niżej na długiej stronie loading="lazy" opóźnia pobieranie, aż czytelnik przewinie w ich pobliże:

<img src="gallery-7.jpg" alt="Harbor at dusk" width="800" height="533" loading="lazy">

Nie wczytuj leniwie głównego obrazka na górze strony; opóźnia to część strony, którą czytelnicy widzą najpierw.

Aby wysyłać mniejsze pliki na małe ekrany, wypisz kilka rozmiarów w srcset i powiedz przeglądarce przez sizes, jak szeroko obrazek będzie wyświetlany. Przeglądarka wybierze plik:

<img
  src="photo-800.jpg"
  srcset="photo-400.jpg 400w, photo-800.jpg 800w, photo-1600.jpg 1600w"
  sizes="(max-width: 600px) 100vw, 600px"
  alt="Harbor at dusk" width="800" height="533">

<picture> idzie dalej i oferuje różne formaty, z <img> jako wersją zapasową, która niesie też alt:

<picture>
  <source srcset="photo.avif" type="image/avif">
  <source srcset="photo.webp" type="image/webp">
  <img src="photo.jpg" alt="Harbor at dusk" width="800" height="533">
</picture>

Formaty obrazków

FormatDobry do
JPEGZdjęć
PNGZrzutów ekranu, obrazków, które potrzebują ostrych krawędzi lub przezroczystości
WebPZdjęć i grafik, mniejszy niż JPEG i PNG, z przezroczystością
AVIFZdjęć, zwykle mniejszy niż WebP
SVGLogo, ikon i diagramów; skaluje się do każdego rozmiaru bez rozmycia
GIFKrótkich animacji, choć wyciszone, zapętlone <video> jest dużo mniejsze

Częste błędy

  • Ścieżka z twojego komputera, np. src="C:\Users\me\photo.jpg". Działa tylko na twoim komputerze. Umieść plik obok HTML i użyj ścieżki względnej.
  • Brak alt. Każdy <img> go potrzebuje, pusty dla dekoracji.
  • Ustawienie w CSS zarówno width, jak i height na wartości o innych proporcjach. Obrazek się rozciąga. Ustaw jeden wymiar i zostaw drugi jako auto albo użyj object-fit.
  • Brak atrybutów width i height, przez co strona skacze, gdy wczytują się obrazki.
  • Ogromne pliki zmniejszane w CSS. Zdjęcie o szerokości 4000 pikseli wyświetlane w 400 pikselach i tak pobiera się w całości. Zmniejsz je albo użyj srcset.
  • Znacznik zamykający </img>. <img> jest pusty; nie ma czego zamykać.

Obrazki w przykładach powyżej to małe SVG wpisane w kod. Aby wypróbować ten sam kod z własnymi zdjęciami, wklej go do edytora online HTML.

Najczęściej zadawane pytania

Jak wstawić obrazek w HTML?

Użyj znacznika <img> z plikiem w src i opisem w alt: <img src="photo.jpg" alt="A red bicycle" width="600" height="400">. <img> nie ma znacznika zamykającego.

Jak zmienić rozmiar obrazka w HTML?

Ustaw atrybuty width i height w pikselach albo użyj CSS, np. img { width: 300px; height: auto; }. Ustawienie tylko jednego wymiaru i pozostawienie drugiego jako auto zachowuje proporcje.

Dlaczego mój obrazek nie wyświetla się w HTML?

Zwykle ścieżka w src jest błędna: jest względna wobec pliku HTML, na większości serwerów wielkość liter w nazwach plików ma znaczenie, a ścieżka w rodzaju C:\photos\cat.jpg istnieje tylko na twoim komputerze. Otwórz adres obrazka bezpośrednio w przeglądarce, żeby to sprawdzić.

Czym jest tekst alternatywny (alt) w HTML?

Atrybut alt to tekstowy zamiennik obrazka. Czytniki ekranu go odczytują, a przeglądarki pokazują go, gdy obrazek się nie wczyta. Opisz, co obrazek pokazuje lub do czego służy; dla obrazków czysto dekoracyjnych użyj alt="".

Jak zrobić responsywny obrazek?

Dodaj mu w CSS max-width: 100%; height: auto;. Obrazek zmniejszy się wtedy, żeby zmieścić się w wąskim kontenerze, i nigdy nie urośnie ponad swoją naturalną szerokość.

Skąd odstęp pod moim obrazkiem?

Obrazki są domyślnie elementami liniowymi i stoją na linii bazowej tekstu, która zostawia pod nimi miejsce na dolne wydłużenia liter. Aby usunąć odstęp, ustaw na obrazku display: block albo vertical-align: middle.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ