Czym jest inline CSS
Inline CSS to CSS zapisany bezpośrednio na elemencie HTML za pomocą atrybutu style. Jego wartość to lista deklaracji, property: value;, które działają tylko na ten element.
Nie ma selektora ani nawiasów klamrowych: celem jest element, na którym stoi atrybut. Deklaracje oddzielaj średnikami. Ostatni średnik jest opcjonalny, ale jego zachowanie sprawia, że dopisanie kolejnej deklaracji jest bezpieczne.
Składnia
<element style="property: value; property: value;">
| Część | Przykład | Uwagi |
|---|---|---|
| Atrybut | style="..." | Atrybut globalny: dozwolony na każdym elemencie HTML |
| Deklaracja | color: #2563eb; | Taka sama składnia jak w regule arkusza stylów |
| Kilka deklaracji | padding: 8px; border: 1px solid #e5e7eb; | Oddzielone ; |
| Cudzysłowy w środku | style="font-family: 'Courier New', monospace;" | W atrybucie w podwójnym cudzysłowie używaj pojedynczych |
Wszystko, co nie jest deklaracją, jest niedozwolone. :hover, ::before, @media i selektory nie mają miejsca w atrybucie style.
3 sposoby dodania CSS do HTML
CSS trafia na stronę na trzy sposoby. Ta strona omawia pierwszy; zewnętrzny i wewnętrzny CSS mają własną stronę.
| Sposób | Gdzie jest CSS | Zasięg | Typowe użycie |
|---|---|---|---|
| Inline | Atrybut style na jednym elemencie | Ten element | Jednorazowe wartości, wartości ustawiane przez JavaScript |
| Wewnętrzny | Element <style> na stronie | Ta strona | Jednostronicowe dema, szablony e-maili, krytyczny CSS |
| Zewnętrzny | Plik .css podpięty przez <link> | Każda strona, która go podpina | Stylizowanie całej witryny |
Ten sam akapit ostylowany na wszystkie trzy sposoby (plik zewnętrzny pokazano jako komentarz, bo podgląd nie ma drugiego pliku do wczytania):
Trzeci akapit zachowuje padding i zaokrąglenie z reguły .note i zastępuje tylko tło, bo styl inline ustawia wyłącznie tę jedną właściwość.
Dlaczego style inline wygrywają
Gdy reguła z arkusza stylów i styl inline ustawiają tę samą właściwość, wygrywa styl inline. Nie ma znaczenia, jak specyficzny jest selektor: nawet selektor ID przegrywa.
Jedynym wyjątkiem jest !important. Deklaracja z arkusza stylów oznaczona !important pokonuje zwykłą deklarację inline, a !important inline pokonuje obie. Właśnie dlatego style inline utrudniają utrzymanie witryny: żeby zmienić je z arkusza stylów, potrzebujesz !important, co zaczyna eskalację. Strona o !important omawia pełną kolejność.
Kiedy inline CSS jest dobrym narzędziem
Style inline dobrze pasują, gdy wartość jest danymi, a nie projektem: zmienia się dla każdego elementu i zapisuje ją szablon albo JavaScript.
Wygląd (kolory, wysokość, zaokrąglenie) jest w arkuszu stylów. Inline jest tylko szerokość, która różni się dla każdego paska. JavaScript zapisuje ten sam atrybut przez element.style:
Po kliknięciu HTML akapitu zawiera style="color: rgb(245, 158, 11); font-weight: bold;". Nazwy właściwości z łącznikiem zamieniają się w JavaScripcie na camelCase (font-weight to fontWeight).
Zmienna CSS jest często najczystszym rozwiązaniem pośrednim: ustaw inline tylko zmienną, style="--progress: 35%", i pozwól arkuszowi stylów jej użyć. Zobacz zmienne CSS.
Gdzie inline CSS nie wystarcza
- Brak stanów i pseudoelementów. W atrybucie
stylenie napiszesz:hover,:focusani::before. - Brak media queries. Szerokość inline nie zmieni się na telefonie.
- Powtarzanie. Dziesięć przycisków z tym samym stylem inline to dziesięć miejsc do edycji.
- Trudne nadpisywanie. Pokonuje go tylko
!importantw arkuszu stylów. - Content Security Policy. Restrykcyjna CSP bez
'unsafe-inline'wstyle-srcblokuje atrybutystylezapisane w HTML.
Częste błędy
- Pisanie selektora albo nawiasów klamrowych w
style.style="p { color: red }"zostaje zignorowane. Trafiają tam tylko deklaracje. - Używanie
=zamiast:. Pisze sięcolor: red, a niecolor=red. - Zagnieżdżanie podwójnych cudzysłowów.
style="font-family: "Arial""kończy atrybut za wcześnie. W środku używaj pojedynczych cudzysłowów. - Zapominanie o jednostkach.
style="width: 200"zostaje zignorowane; napisz200px. Tylko długość0może obyć się bez jednostki. - Stylizowanie całej witryny inline. Przenieś powtarzające się style do klasy w arkuszu stylów, a inline zostaw wartości zależne od elementu.
Najczęściej zadawane pytania
Czym jest inline CSS?
Inline CSS to CSS zapisany w atrybucie style elementu, na przykład <p style="color: red;">. Deklaracje działają tylko na ten jeden element, bez selektora.
Jakie są 3 sposoby dodania CSS do HTML?
Inline, przez atrybut style na elemencie; wewnętrzny, przez element <style> na stronie; oraz zewnętrzny, przez osobny plik .css podpięty w <head> za pomocą <link rel="stylesheet" href="styles.css">. Dla całej witryny zwykle wybiera się pliki zewnętrzne.
Czy inline CSS nadpisuje zewnętrzny CSS?
Tak, w większości przypadków. Deklaracja w atrybucie style pokonuje każdy selektor z arkusza stylów, bez względu na jego specyficzność. Arkusz stylów może wygrać tylko przez !important, a !important inline pokonuje także to.
Czy inline CSS to zła praktyka?
Przy stylizowaniu całej witryny tak: powtarza się, nie może używać :hover ani media queries i trudno go nadpisać. Sprawdza się przy jednorazowych wartościach ustawianych przez JavaScript albo szablon, takich jak szerokość paska postępu czy kolor wybrany przez użytkownika.
Czy można użyć hover w inline CSS?
Nie. Atrybut style przyjmuje tylko deklaracje, więc nie da się w nim zapisać pseudoklas takich jak :hover, pseudoelementów takich jak ::before ani reguł @media. Umieść je w elemencie <style> albo w arkuszu stylów.