This content originally appeared on David Walsh Blog and was authored by David Walsh
For as long as developers have written CSS code, we’ve been desperate to have a method to allow styling a parent element based child characteristics. That’s not been possible until now. CSS has introduced the :has
pseudo-class which allows styling a parent based on a relative CSS selector!
Let’s have a look at a few use cases for :has
in CSS:
/* If an `a` element contains an image, set the `a`'s display */ a:has(img) { display: block; } /* If a `figure` has a `caption` with a `multiline` class allow the `figure` to have any height */ figure { height: 200px; } figure:has(caption.multiline) { height: auto; } /* Hide an advert containing `div` until ads load and have been injected */ .ad-container { display: none; } .ad-container:has(.ad) { display: block; } /* If we have an `article` element without a heading, add top padding because `H1`s have top padding */ article:not(:has(h1)) { padding-top: 20px; }
Apple’s Safari is the first browser to support :has
, though we should see others quickly follow suit as it’s part of the official CSS spec. Now that we have this new pseudo-class, do you think you’ll use it much? Or will you stick to your current workarounds?
The post CSS :has appeared first on David Walsh Blog.
This content originally appeared on David Walsh Blog and was authored by David Walsh
David Walsh | Sciencx (2022-03-28T10:03:15+00:00) CSS :has. Retrieved from https://www.scien.cx/2022/03/28/css-has/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.