<svg>
Grafika wektorowa zapisana bezpośrednio w kodzie strony: ikony, logo, wykresy.
- Wyświetlanie
- inline
- Znacznik zamykający
- Wymagany
- Dozwolona zawartość
- Elementy SVG, na przykład
<rect>,<circle>,<path>,<text>,<g>
Przykład
#<svg width="260" height="120" viewBox="0 0 260 120" role="img" aria-labelledby="badge-title">
<title id="badge-title">Odznaka za ukończenie kursu HTML</title>
<rect x="4" y="4" width="252" height="112" rx="18" fill="#1e1b4b" stroke="#a78bfa" stroke-width="4" />
<circle cx="60" cy="60" r="34" fill="#f97316" />
<path d="M44 61 l11 11 l22 -24" fill="none" stroke="#fff" stroke-width="7" stroke-linecap="round" stroke-linejoin="round" />
<text x="112" y="56" fill="#f5f3ff" font-size="20" font-family="system-ui, sans-serif">Kurs HTML</text>
<text x="112" y="82" fill="#c4b5fd" font-size="15" font-family="system-ui, sans-serif">ukończony</text>
</svg>Definicja i zastosowanie
#Element <svg> pozwala wpisać grafikę wektorową prosto w HTML. W środku rysujesz kształtami SVG, takimi jak <rect> (prostokąt), <circle> (koło), <line> (linia), <path> (dowolny kształt) i <text> (tekst). Grafika wektorowa pozostaje ostra przy każdym powiększeniu i zwykle waży bardzo mało.
SVG to osobny język oparty na XML, z własnymi elementami i atrybutami. W przeciwieństwie do <canvas> każdy kształt pozostaje elementem w drzewie DOM, więc możesz go ostylować w CSS (fill, stroke), animować i obsłużyć kliknięcie jak zwykły element HTML.
Atrybut viewBox definiuje wewnętrzny układ współrzędnych, a width i height rozmiar na stronie. Dzięki temu ta sama ikona narysowana w siatce 24 na 24 może mieć na stronie 16 albo 64 piksele. Ikony, które mają przejmować kolor tekstu, rysuj z fill="currentColor".
Składnia
#<svg width="…" height="…" viewBox="0 0 … …">
…
</svg>Atrybuty
#width / height
długość, np. `24` albo `100%`
Rozmiar grafiki na stronie. Warto je podawać zawsze, bo bez nich rozmiar zależy od przeglądarki i kontenera, a grafika może niespodziewanie zająć całą szerokość strony.min-x min-y szerokość wysokość
Wewnętrzny układ współrzędnych, w którym rysujesz kształty. PrzyviewBox="0 0 24 24"punkt (12, 12) to zawsze środek grafiki, niezależnie od tego, jak dużą ją wyświetlisz. W przykładzie ta sama gwiazdka ma trzy różne rozmiary.kolor, `none` albo `currentColor`
Kolor wypełnienia i obrysu kształtów. Ustawione na samym<svg>dziedziczą je wszystkie kształty w środku. WartośćcurrentColorbierze kolor tekstu otoczenia, więc ikona zmienia się razem z nim.xmlns
http://www.w3.org/2000/svg
Przestrzeń nazw SVG. W kodzie HTML możesz ją pominąć, ale w osobnym pliku.svgjest obowiązkowa.
Element obsługuje też wszystkie atrybuty globalne, takie jak class, id, style czy hidden.
Atrybuty w praktyce
#viewBox
min-x min-y szerokość wysokośćWewnętrzny układ współrzędnych, w którym rysujesz kształty. Przy viewBox="0 0 24 24" punkt (12, 12) to zawsze środek grafiki, niezależnie od tego, jak dużą ją wyświetlisz. W przykładzie ta sama gwiazdka ma trzy różne rozmiary.
<svg width="16" height="16" viewBox="0 0 24 24" aria-hidden="true">
<polygon points="12,2 14.9,8.6 22,9.3 16.6,14 18.2,21 12,17.3 5.8,21 7.4,14 2,9.3 9.1,8.6" fill="#facc15" />
</svg>
<svg width="32" height="32" viewBox="0 0 24 24" aria-hidden="true">
<polygon points="12,2 14.9,8.6 22,9.3 16.6,14 18.2,21 12,17.3 5.8,21 7.4,14 2,9.3 9.1,8.6" fill="#facc15" />
</svg>
<svg width="64" height="64" viewBox="0 0 24 24" aria-hidden="true">
<polygon points="12,2 14.9,8.6 22,9.3 16.6,14 18.2,21 12,17.3 5.8,21 7.4,14 2,9.3 9.1,8.6" fill="#facc15" />
</svg>fill / stroke
kolor, `none` albo `currentColor`Kolor wypełnienia i obrysu kształtów. Ustawione na samym <svg> dziedziczą je wszystkie kształty w środku. Wartość currentColor bierze kolor tekstu otoczenia, więc ikona zmienia się razem z nim.
<style>
.lesson-time { display: flex; align-items: center; gap: 6px; color: #38bdf8; }
</style>
<p class="lesson-time">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
<circle cx="12" cy="12" r="9" />
<path d="M12 7 v5 l3 3" />
</svg>
Czas lekcji: 12 minut
</p>Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- Grafikę, która coś przekazuje, oznacz
role="img"i nadaj jej nazwę elementem<title>lub atrybutemaria-label. Dekoracyjne ikony ukryj przed czytnikami ekranu przezaria-hidden="true". - Ikony rysuj z
fill="currentColor"albostroke="currentColor". Zmienią kolor razem z tekstem, także po najechaniu kursorem i w trybie ciemnym. - Pliki SVG z programów graficznych często zawierają zbędne dane. Przed wklejeniem do strony przepuść je przez optymalizator, na przykład SVGO.
Powiązane hasła
#- <canvas>Płótno do rysowania grafiki bitmapowej za pomocą JavaScriptu.
- <img>Obraz osadzony na stronie.
- <picture>Kontener na kilka wersji obrazu. Przeglądarka wybiera tę, która najlepiej pasuje do ekranu i formatu.
- <figure>Samodzielna ilustracja z opcjonalnym podpisem: obraz, wykres, fragment kodu, cytat.
Widzisz błąd albo brakuje przykładu? Napisz do nas.