Przejdź do treści

Pusty element :empty

W jaki sposób zmienić sposób formatowania elementów, które nie zawierają żadnej treści?

CSS 3

selektor:empty { cecha: wartość }
Selektorem może być dowolny znacznik [zobacz: Wstawianie stylów].
Natomiast wyrazy "cecha" oraz "wartość" określają atrybuty elementu nadane poprzez style i zostaną opisane w dalszych rozdziałach.

Zdarza się, że w dokumencie HTML znajdują się elementy, które nie zawierają żadnej treści, ani dzieci. Możemy mieć z tym do czynienia w przypadku elementów, które z definicji nie posiadają znacznika zamykającego (BR, HR, IMG, INPUT), ale również gdy po prostu nie wstawimy do znacznika żadnej treści. Dzięki opisywanemu tutaj selektorowi można nadać takim elementom odrębne formatowanie.

Wstawianie pustych znaczników do kodu źródłowego nie ma wielkiego sensu semantycznego, ponieważ ich przeznaczeniem jest oznaczanie treści.

Przykład :empty

Po wpisaniu w arkuszu stylów:

📋 Zaznacz kod ▶ Edytuj na żywo

p:empty { background-color: red; width: 100%; height: 1em }
a w dowolnym miejscu strony:

📋 Zaznacz kod ▶ Edytuj na żywo

<p></p>
<p> </p>
<p><b></b></p>
<p>To jest akapit</p>
otrzymamy cztery akapity, z których tylko pierwszy element (pusty) powinien mieć ustawione tło koloru czerwonego:

To jest akapit

Zwróć uwagę, że drugi akapit (zawierający tylko spację) ani trzeci akapit (zawierający tylko pusty element-dziecko), nie otrzymały zmienionego formatowania.


Przykład z użyciem elementu, który nie posiada znacznika zamykającego:

📋 Zaznacz kod ▶ Edytuj na żywo

img:empty { border: 1px solid red }
To jest pusty element

Przeglądarki


Chrome

Firefox

Edge

Opera

Safari
Poziom wsparcia
min. 2,5 roku
:empty1
2008-12-11
1
2004-11-09
12
2015-07-29
9.5
2008-06-12
3.1
2008-03-18
 100%

Komentarze #

  • Sławomir Kokłowski
    Sławomir Kokłowski

    18.05.2020 21:19
    Zależy o co pytasz. Ale generalnie na tak postawione pytanie odpowiedź brzmi: tak ;-)
    Zobacz więcej

  • Gosc
    Gosc

    18.05.2020 20:29
    Ktoś to jeszcze "ulepsza"?
    Zobacz więcej

  • Nitr0Skay
    Nitr0Skay

    07.01.2015 21:17
    kurshtml
    Teraz już jest w porządku. Dziękuję za poprawkę :)
    Zobacz więcej

  • Sławomir Kokłowski
    Sławomir Kokłowski

    07.01.2015 00:41
    Dziękuję za informację. Minifikator kodu usunął białe znaki z tego znacznika.
    Zobacz więcej

  • Nitr0Skay
    Nitr0Skay

    06.01.2015 22:24
    Gość
    Potwierdzam. U mnie też to występuje. Korzystam z Chrome
    http://caniuse.com/#search=%3Aempty
    http://i.imgur.com/T3Mv6F2.png
    Zobacz więcej

  • Gość
    Gość

    06.01.2015 22:05
    Chciałam zapytać: czy tu (http://www.kurshtml.edu.pl/css/pusty_element,pseudoklasy.html) nie ma błędu? U mnie zarówno pierwszy jak i trzeci akapit mają czerwone tło.
    Zobacz więcej

  • Roberto
    Roberto

    31.03.2013 19:27
    ujemne marginesy, position:absolute, ogólnie wyjęcie z obiegu albo 'przeciwdziałanie' zmianom.
    nazwy muszą być dzieckiem elementu, którego :hover powoduje zmianę - [...] jak najedziesz na 'magia' to strong nadal jest...
    Zobacz więcej

  • GoŚćX
    GoŚćX

    31.03.2013 19:21
    Chciałbym wiedzieć czy istnieje taka cecha że pojawiający się element który wcześniej miał ceche i wartość: display:none; nie rozwali żadnych elementów strony, tylko pokaże się nad nimi. I gdy robię menu gdzie po najechaniu na klawisz np: galeria zwiększa on wysokoś i na nim wyskakują nazwy...
    Zobacz więcej

  • Roberto
    Roberto

    30.03.2013 21:03
    zmiana display dziecka z none na jakiś przy :hover rodzica...
    Zobacz więcej

  • jaaa
    jaaa

    30.03.2013 20:12
    Jak zrobić żeby po najechaniu myszką na jakiś elemnt (np: klawisz z menu) oprucz zmiany (podświetlenia klawisza) pod nim pokazywał się na przykład jakiś bloczek (zupełnie inny elemnt) jakie selektory użyć???
    Zobacz więcej

Zobacz więcej komentarzy

Facebook