How does the :empty pseudo-class work?
Jul 08, 2025 am 01:49 AMThe :empty pseudo-class in CSS targets elements that have absolutely no content, including text (even whitespace), HTML elements, or other nodes. An element counts as :empty if it has no child nodes and contains no invisible characters like spaces or line breaks. Common use cases include hiding empty containers (e.g., .box:empty { display: none; }) and styling empty form fields (e.g., highlighting empty inputs with a red border). However, be cautious with whitespace, comments, or dynamically added content, as even a single space invalidates :empty, and JavaScript changes won’t automatically update its behavior.
The :empty
pseudo-class in CSS targets elements that have no content—meaning they don’t contain any text (including whitespace), HTML elements, or other nodes. It’s useful when you want to apply styles or behaviors only to elements that are truly empty.
When does an element count as :empty
?
An element is considered :empty
if it meets both of these conditions:
- It has no child nodes (text or elements).
- It doesn't contain even a single space, line break, or other invisible character.
For example:
<div></div> <!-- This matches :empty --> <div> </div> <!-- This does NOT match :empty because of the space --> <div><span></span></div> <!-- Also does NOT match :empty because it contains an element -->
So if you're trying to style or hide empty containers, :empty
can be handy—but be careful with whitespace.
Common use cases for :empty
One of the most common uses of :empty
is hiding placeholder or dynamically filled elements that end up empty. For instance, imagine a layout where some boxes might not get data due to API issues or conditional rendering.
You could do something like this:
.box:empty { display: none; }
This hides .box
elements that are empty, which helps avoid awkward blank spaces in your layout.
Another case is form validation. You might want to highlight fields that are required but left empty:
input:empty { border: 1px solid red; }
Keep in mind though, this only works if the input is truly empty. If someone types and then deletes everything, it will still match :empty
.
Things to watch out for
Here are a few gotchas when using :empty
:
- Whitespace matters: Even a single space or newline inside an element makes it not empty.
-
Comments and HTML entities don’t count as content: So
<div><!-- comment --></div>
still counts as empty. -
Dynamic content may confuse it: If JavaScript adds or removes content after page load,
:empty
won’t automatically update its behavior. That means if you’re relying on:empty
for styling, you might need to handle updates via JavaScript too.
If you're working with templates or frameworks that sometimes leave behind empty tags, :empty
can help keep your UI clean without extra scripting.
Final thoughts
:empty
is a simple selector that works well for specific scenarios like hiding empty containers or styling empty inputs. But since it's sensitive to even small bits of content or whitespace, it pays to double-check how your HTML is structured.
That’s basically all you need to know to use :empty
effectively.
The above is the detailed content of How does the :empty pseudo-class work?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

To achieve the rotation effect of an element, use JavaScript combined with CSS3's transform attribute. 1. Use transform's rotate() function to set the rotation angle. 2. Realize dynamic rotation through requestAnimationFrame. 3. Consider reducing DOM operations or using CSS animations when optimizing performance. 4. Ensure browser compatibility and add prefixes. 5. User interactive control rotation is achieved through mouse or touch events.

The reason we use semantic tags is that they improve SEO, enhance accessibility, and code maintainability. 1. Include titles when using them to avoid abuse. 2. Use stand-alone content blocks, suitable for blogs or news. 3. Pay attention to the nesting and SEO of tags, and do not pile up tags for SEO.

There are five ways to include CSS in React: 1. Use inline styles, which are simple but not conducive to reuse and maintenance; 2. Use CSS files, which are implemented through import, which are conducive to organization but may lead to conflicts; 3. Use CSSModules to avoid global conflicts but require configuration; 4. Use StyledComponents to dynamically generate styles using JavaScript but require dependency on libraries; 5. Use Sass or Less to provide more functions but increase construction complexity.

There are three ways to selectively include CSS on a specific page: 1. Inline CSS, suitable for pages that are not frequently accessed or require unique styles; 2. Load external CSS files using JavaScript conditions, suitable for situations where flexibility is required; 3. Containment on the server side, suitable for scenarios using server-side languages. This approach can optimize website performance and maintainability, but requires balance of modularity and performance.

ThedifferentmethodsforincludingCSSinawebpageareinline,internal,andexternalCSS.1)InlineCSS:Easytoimplementbutleadstounmaintainablecode.2)InternalCSS:MoreorganizedthaninlinebutcanclutterHTML.3)ExternalCSS:Bestforlargerprojects,promotesmaintainabilityan

HTML, CSS and JavaScript are responsible for structure, style and dynamic functions in web development respectively. 1. HTML defines the web structure, 2. CSS is responsible for style and layout, 3. JavaScript provides dynamic interaction and functions.

ThebestpracticesforincludingCSSinawebsiteare:1)UseexternalCSSforseparationofcontentandpresentation,reusability,andcachingbenefits.2)ConsiderusingCSSpreprocessorslikeSassorLessformodularity.3)OptimizeperformancewithCSSminificationandcompression.4)Stru

CSSismostlycase-insensitive,butselectorsandcustompropertiesarecase-sensitive.1)Useconsistentcasingconventions.2)EmploylinterslikeStylelint.3)Testacrossbrowsers.4)Bemindfulofexternalresources'conventions.Consistentcasinghelpsmaintaincodecleanlinessand
