Selektory#
Pseudokalsa elementu czystego#
:blank { /* deklaracje */ }
Pseudoklasa :blank
reprezentuje elementy, które w ogóle nie zawierają dzieci. W kontekście drzewa dokumentu jedynie węzły elementów oraz niektóre węzły treści (takie jak węzły tekstowe, węzły CDATA czy węzły referencyjnych encji), których dane tekstowe mają niezerową długość (z pominięciem znaków istotnych dla procesu przetwarzania białych znaków), wpływają na utracenie stanu czystości; komentarze, instrukcje przetwarzania i inne węzły nie wpływają na to czy element uważany jest za czysty, czy też nie.
Powyższy opis pochodzi z ostatniej specyfikacji selektorów, ale i tak nie jest do końca precyzyjny. Najnowszy DOM4 eliminuje sporo węzłów, które nigdy nie zostały zaimplementowane w aktualnych programach (np. węzły referencyjnych encji), sekcje CDATA zastąpiono węzłami tekstowymi (czego żadna aktualna przeglądarka nie wprowadziła po dziś dzień). Opis zostanie zweryfikowany w niedalekiej przyszłości.
Z praktycznego punktu widzenia pseudoklasa :blank
jest identyczna z pseudoklasą :empty
, a jedyna różnica polega na tym, że dla :blank
białe znaki w danych tekstowych są nieistotne. Zdecydowałem się na nieformalne określenia typu "czysty" i "pusty", żeby w jakiś sensowny sposób odróżnić od siebie te dwie pseudoklasy (nic innego nie przyszło mi do głowy).
Warto podkreślić, że elementy z natury puste (nazywane po prostu elementami pustymi) będą automatycznie pasowały do pseudoklasy :blank
.
Prosty przykład:
<!DOCTYPE html>
<html>
<head>
<style>
:blank {border: 5px solid red;}
</style>
</head>
<body>
<p>Elementy czyste otrzymają czerwone obramowanie.</p> <!-- P - nieczysty -->
<ol>
<li><p>Akapit z tekstem (jak wyżej).</li> <!-- 1. P - nieczysty -->
<li><p></li> <!-- 2. P - czysty -->
<li><p></p></li> <!-- 3. P - czysty -->
<li><p><!-- Komentarz HTML --></p></li> <!-- 4. P - czysty -->
<li><p> <!-- Komentarz HTML --></p></li> <!-- 5. P - czysty -->
<li><p> </p></li> <!-- 6. P - czysty -->
<li><p> </p></li> <!-- 7. P - nieczysty -->
<li><p><strong></strong></li> <!-- 8. P nieczysty, ale STRONG czysty -->
<li><img src="" alt=""></li> <!-- 9. IMG czysty -->
<li><hr></li> <!-- 10. HR czysty -->
</ol>
</body>
</html>
Na chwilę obecną żadna aktualna przeglądarka nie obsługuje pseudoklasy :blank
.