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?
JavaScript Promise API
While synchronous code is easier to follow and debug, async is generally better for performance and flexibility. Why “hold up the show” when you can trigger numerous requests at once and then handle them when each is ready? Promises are becoming a big part of the JavaScript world…
Introducing MooTools ScrollSpy
I’ve been excited to release this plugin for a long time. MooTools ScrollSpy is a unique but simple MooTools plugin that listens to page scrolling and fires events based on where the user has scrolled to in the page. Now you can fire specific…
[ad_2]
Source link