Does CSS :not() Selectively Target Distant Descendant Elements?
Can the CSS :not() Selector Target Distant Descendants?
The CSS3 :not() pseudo-class is intended for excluding elements that match a specified selector. It has limited support for targeting distant descendants.
Implementation and Support
The :not() selector has partial implementation in modern browsers, but its support for targeting distant descendants is limited. It primarily operates on direct children of an element.
Behavior with Distant Descendants
In your example, the :not(p) selector does not affect the
element inside the
, even though it is a descendant of the. This is because :not() only negates the immediate child selector. Theelement matches the :not(p) criteria and its color is set to red. Subsequently, theelement inherits this color from its parent
.Expected Behavior vs. Actual Behavior
You expected the
element to remain unaffected by the :not() selector, but it inherited the color change. This is not the intended behavior for targeting distant descendants.
Solution
To specifically style only
elements within a
, you should use a more direct selector:div p { color: black; }Copy after loginEnhancements in CSS Selectors Level 4
CSS Selectors Level 4 proposes extending :not() to accept complex selectors with combinators. This would allow you to target distant descendants with greater flexibility. Once implemented, you could write selectors like:
p:not(div p) { color: red; }Copy after loginThis selector would target all
elements that are not direct descendants of a
.The above is the detailed content of Does CSS :not() Selectively Target Distant Descendant Elements?. For more information, please follow other related articles on the PHP Chinese website!
Statement of this WebsiteThe content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn![]()
Hot AI Tools
![]()
Undresser.AI Undress
AI-powered app for creating realistic nude photos
![]()
AI Clothes Remover
Online AI tool for removing clothes from photos.
![]()
Undress AI Tool
Undress images for free
![]()
Clothoff.io
AI clothes remover
![]()
Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!
![]()
Hot Article
How to fix KB5055523 fails to install in Windows 11?4 weeks ago By DDDHow to fix KB5055518 fails to install in Windows 10?4 weeks ago By DDDRoblox: Grow A Garden - Complete Mutation Guide3 weeks ago By DDDRoblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌How to fix KB5055612 fails to install in Windows 10?3 weeks ago By DDD![]()
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
Java Tutorial1664
14
CakePHP Tutorial1422
52
Laravel Tutorial1316
25
PHP Tutorial1267
29
C# Tutorial1239
24

I see Google Fonts rolled out a new design (Tweet). Compared to the last big redesign, this feels much more iterative. I can barely tell the difference

Have you ever needed a countdown timer on a project? For something like that, it might be natural to reach for a plugin, but it’s actually a lot more

Everything you ever wanted to know about data attributes in HTML, CSS, and JavaScript.

At the start of a new project, Sass compilation happens in the blink of an eye. This feels great, especially when it’s paired with Browsersync, which reloads

Tartan is a patterned cloth that’s typically associated with Scotland, particularly their fashionable kilts. On tartanify.com, we gathered over 5,000 tartan

The inline-template directive allows us to build rich Vue components as a progressive enhancement over existing WordPress markup.

One thing that caught my eye on the list of features for Lea Verou's conic-gradient() polyfill was the last item:

Let’s attempt to coin a term here: "Static Form Provider." You bring your HTML
