CSS - Pseudo-class :empty



The CSS pseudo-class selector :empty represents an element that is empty and has no children.

An element can be called empty:

  • If it has nothing between its tags. For example: <div></div>

  • If an element contains a code comment. For example: <div><!-- An empty element, with comment --></div>

  • If the CSS for the element generates content, such as from a pseudo-element like ::before or ::after. For example: div::before {content: "Empty element"}

  • Self-closing elements like <br />, <hr /> and <img /> are also considered as empty.

Syntax

:empty {
   /* ... */
}

Accessibility concerns: Interactive content that is empty can not be parsed by the assistive technologies, such as screen readers. Hence, all interactive content must have an accessible name, that can be provided by a text value for the interactive control's parent element; which in turn makes it accessible to the assistive technologies.

CSS :empty Example

Here is an example of :empty pseudo-class, applied on <p> tag:

<html>
<head>
<style>
   p:empty {
      width: 200px;
      height: 30px;
      background: magenta;
   }
   div {
      border: 3px solid black;
      width: 300px;
      text-align: center;
   }
</style>
</head>
<body>
   <h2>:empty example</h2>
   <div>
   <p>Not an empty paragraph</p>
   <p></p>
   <p>Not an empty paragraph</p>
   </div>
</body>
</html>

Here is an example of :empty pseudo-class, applied on <div> tag:

<html>
<head>
<style>
   #circle {
      background-color: red;
      height: 100px;
      width: 100px;
      border-radius: 50%;
   }

   #circle:empty {
      background-color: yellow;
   }

   div {
      display: inline-block;
      color: black;
   }
</style>
</head>
<body>
   <div id="circle"><!-- Yellow circle --></div>
   <div id="circle"><!-- not an empty element-->
      <h2>:empty</h2>
   </div>
   <div id="circle">
   <p>
      <!-- Non-collapsible whitespace and elements around this comment. -->
   </p>
   </div>
</body>
</html>
Advertisements