Kurs HTML

Lekcja 11.7: Element <style> i atrybut style

Strona główna > Rozdział 11: Zaawansowane funkcje HTML > Element <style> i atrybut style

Dodawanie stylów CSS do HTML

Chociaż głównym i zalecanym sposobem dodawania stylów CSS do strony HTML jest użycie zewnętrznych arkuszy stylów (plików .css) linkowanych za pomocą znacznika <link rel="stylesheet" href="..."> w sekcji <head>, istnieją również dwa inne sposoby definiowania stylów bezpośrednio w dokumencie HTML:

  1. Wewnętrzny arkusz stylów (Internal Stylesheet): Użycie elementu <style> w sekcji <head>.
  2. Style wbudowane (Inline Styles): Użycie atrybutu style bezpośrednio w znaczniku HTML, którego wygląd chcemy zmienić.

W tej lekcji przyjrzymy się obu tym metodom, ich zastosowaniom oraz wadom i zaletom w porównaniu do zewnętrznych arkuszy stylów.

Wewnętrzny arkusz stylów: Element <style>

Element <style> umieszcza się w sekcji <head> dokumentu HTML. Pomiędzy znacznikami <style> a </style> można pisać reguły CSS, tak samo jak w zewnętrznym pliku .css. Style zdefiniowane w ten sposób mają zastosowanie tylko do bieżącego dokumentu HTML.

<!DOCTYPE html>
<html lang="pl">
<head>
  <meta charset="UTF-8">
  <title>Wewnętrzny Arkusz Stylów</title>
  <style>
    /* Reguły CSS dla tej konkretnej strony */
    body {
      font-family: Arial, sans-serif;
      background-color: #f0f8ff; /* AliceBlue */
    }
    h1 {
      color: navy;
      text-align: center;
    }
    p {
      color: #333;
      line-height: 1.6;
    }
  </style>
</head>
<body>
  <h1>Tytuł strony</h1>
  <p>To jest paragraf stylizowany za pomocą wewnętrznego arkusza stylów.</p>
</body>
</html>

Kiedy używać <style>?

Wady <style>:

Style wbudowane: Atrybut `style`

Atrybut style można dodać do dowolnego elementu HTML w sekcji <body>. Jego wartością jest ciąg znaków zawierający deklaracje CSS (właściwość: wartość;), które mają być zastosowane bezpośrednio do tego konkretnego elementu.

<h2 style="color: green; text-decoration: underline;">Podtytuł ze stylami wbudowanymi</h2>

<p style="font-size: 18px; font-weight: bold; background-color: yellow; padding: 10px;">
  Ten paragraf ma indywidualne style zdefiniowane za pomocą atrybutu <code>style</code>.
</p>

Wynik w przeglądarce:

Podtytuł ze stylami wbudowanymi

Ten paragraf ma indywidualne style zdefiniowane za pomocą atrybutu style.

Kiedy używać atrybutu `style`?

Wady atrybutu `style`:

Generalnie, należy unikać nadmiernego używania stylów wbudowanych. Są one przydatne w specyficznych przypadkach, ale dla ogólnego stylowania strony znacznie lepsze są zewnętrzne arkusze CSS.

Kaskadowość i specyficzność

Przeglądarka stosuje style do elementów zgodnie z zasadami kaskadowości i specyficzności:

  1. Kaskada (źródło stylów): Style przeglądarki (domyślne) < Style użytkownika < Style autora (zewnętrzne, wewnętrzne, wbudowane).
  2. Specyficzność selektora: Bardziej specyficzne selektory (np. ID) mają pierwszeństwo przed mniej specyficznymi (np. klasy, znaczniki).
  3. Kolejność w kodzie: Jeśli selektory mają tę samą specyficzność, wygrywa reguła zdefiniowana później w kodzie.

W kontekście metod dodawania stylów, ich priorytet (od najniższego do najwyższego) wygląda zazwyczaj tak:

  1. Style przeglądarki
  2. Style z zewnętrznego arkusza CSS (<link>)
  3. Style z wewnętrznego arkusza CSS (<style>)
  4. Style wbudowane (atrybut style)
  5. Style z deklaracją !important (należy używać bardzo ostrożnie!)

Oznacza to, że style wbudowane nadpiszą style zdefiniowane w <style> lub w zewnętrznym pliku .css dla tego samego elementu i tej samej właściwości (chyba że użyto !important).

Podsumowanie: Której metody używać?

Zadanie praktyczne (z rozwiązaniem)

Zadanie: Utwórz stronę HTML z nagłówkiem <h1> i dwoma paragrafami <p>. Użyj wewnętrznego arkusza stylów (<style>), aby nadać wszystkim paragrafom kolor tekstu niebieski (blue). Następnie, użyj stylu wbudowanego (atrybut style), aby tylko drugi paragraf miał dodatkowo pogrubioną czcionkę (font-weight: bold;).

Rozwiązanie:

<!DOCTYPE html>
<html lang="pl">
<head>
  <meta charset="UTF-8">
  <title>Style Wewnętrzne i Wbudowane</title>
  <style>
    /* Wewnętrzny arkusz stylów */
    p {
      color: blue; /* Styl dla wszystkich paragrafów */
    }
  </style>
</head>
<body>

<h1>Testowanie stylów CSS</h1>

<p>To jest pierwszy paragraf. Ma tylko styl z wewnętrznego arkusza (niebieski kolor).</p>

<p style="font-weight: bold;">
  To jest drugi paragraf. Ma styl z wewnętrznego arkusza (niebieski kolor) 
  oraz dodatkowy styl wbudowany (pogrubienie).
</p>

</body>
</html>

W wyniku, oba paragrafy będą miały niebieski tekst (ze względu na regułę w <style>), ale tylko drugi paragraf będzie dodatkowo pogrubiony (ze względu na atrybut style).

Dodatkowe zadania do samodzielnego wykonania:

  1. Dodaj do wewnętrznego arkusza stylów regułę dla h1, która ustawia kolor na czerwony.
  2. Do pierwszego paragrafu dodaj atrybut style ustawiający rozmiar czcionki na 14px.
  3. Spróbuj w atrybucie style drugiego paragrafu ustawić kolor tekstu na zielony (color: green;). Zobacz, jak nadpisuje to regułę z wewnętrznego arkusza.

Najczęściej zadawane pytania

Jakie są trzy sposoby dodawania CSS do HTML?

Zewnętrzne arkusze stylów (<link rel="stylesheet">), wewnętrzne arkusze stylów (<style> w <head>) oraz style wbudowane (atrybut style w elementach).

Która metoda dodawania CSS jest najlepsza?

Zdecydowanie preferowane są zewnętrzne arkusze stylów (.css) ze względu na separację kodu, reużywalność, cache'owanie i łatwość zarządzania.

Do czego służy element <style>?

Pozwala na zdefiniowanie reguł CSS (wewnętrznego arkusza stylów) bezpośrednio w sekcji <head> dokumentu HTML. Style te dotyczą tylko tej jednej strony.

Co to są style wbudowane (atrybut style)?

Są to deklaracje CSS umieszczone bezpośrednio w atrybucie `style` danego elementu HTML. Mają one najwyższą specyficzność (poza !important) i dotyczą tylko tego jednego elementu.

Kiedy unikać stylów wbudowanych?

Należy ich unikać do ogólnego stylowania strony, ponieważ utrudniają zarządzanie, zaśmiecają kod HTML i mają bardzo wysoką specyficzność, co może prowadzić do problemów z nadpisywaniem stylów.