A "stylepattern" attribute accepts a regex pattern and the resulting capture groups can be styled using CSS `::part(group-n)`
keithclark.github.io/richinput/
A "stylepattern" attribute accepts a regex pattern and the resulting capture groups can be styled using CSS `::part(group-n)`
keithclark.github.io/richinput/
webkit.org/blog/16967/t...
webkit.org/blog/16967/t...
All supported versions of Node now support require() of standard JS modules, aka require(esm).
So add type: "module" to your package.json, simplify your build, and spark some joy!
nodejs.org/en/about/pre...
All supported versions of Node now support require() of standard JS modules, aka require(esm).
So add type: "module" to your package.json, simplify your build, and spark some joy!
nodejs.org/en/about/pre...
(This applies to developer workflows & end-users.)
Several large-scale independent multi-year language, runtime, tooling, & library investments are approaching the payback stage all around the same time.
(This applies to developer workflows & end-users.)
Several large-scale independent multi-year language, runtime, tooling, & library investments are approaching the payback stage all around the same time.
First, styling the in-page part of controls + the popover for <select>. (Later we’ll do popovers for more things.)
First, styling the in-page part of controls + the popover for <select>. (Later we’ll do popovers for more things.)
blog.lusito.info/stop-using-a...
blog.lusito.info/stop-using-a...
Developed with @d12n.me’s help over the last month.
Made possible by the pioneering work of @bram.us, Artem Godin, @janeori.propjockey.io and many others!
Blog post: lea.verou.me/blog/2025/st...
Docs: observe.style
Developed with @d12n.me’s help over the last month.
Made possible by the pioneering work of @bram.us, Artem Godin, @janeori.propjockey.io and many others!
Blog post: lea.verou.me/blog/2025/st...
Docs: observe.style
When Node 18 hits EOL in less than 3 months, we can finally drop CJS builds and go ESM-only
When Node 18 hits EOL in less than 3 months, we can finally drop CJS builds and go ESM-only
td:has(~ td:hover), /* previous sibling cells */
table:has(td:nth-of-type(3):hover) /* column cells */
tr:not(:first-of-type):has(~ tr:hover)
td:nth-of-type(3) {
background: var(--highlighted);
}
td:has(~ td:hover), /* previous sibling cells */
table:has(td:nth-of-type(3):hover) /* column cells */
tr:not(:first-of-type):has(~ tr:hover)
td:nth-of-type(3) {
background: var(--highlighted);
}
@httparchive.org, focusing on page growth, #webperf and #ux:
www.speedcurve.com/blog/page-bl...
A common question is "How big SHOULD my pages be?" According to analysis by @infrequently.org, the ideal page should be <1.4 MB with <365 KB coming from JS.
@httparchive.org, focusing on page growth, #webperf and #ux:
www.speedcurve.com/blog/page-bl...
A common question is "How big SHOULD my pages be?" According to analysis by @infrequently.org, the ideal page should be <1.4 MB with <365 KB coming from JS.
Same React app. One is bundled as is.
Another uses preact/compat to alias React imports and swaps in Preact under the hood.
Bundle size (gzip):
React: ~140KB
Preact: ~8KB
All of this by just changing a few lines and installing a couple of packages.
Same React app. One is bundled as is.
Another uses preact/compat to alias React imports and swaps in Preact under the hood.
Bundle size (gzip):
React: ~140KB
Preact: ~8KB
All of this by just changing a few lines and installing a couple of packages.
css-tricks.com/csswg-minute...
† Still a bad name.
css-tricks.com/csswg-minute...
† Still a bad name.
`aria-label` and `aria-labelledby` aren't allowed on divs, spans, and other static text elements out of the box, and *most* screenreaders won't announce them.
#accessibility #a11y
`aria-label` and `aria-labelledby` aren't allowed on divs, spans, and other static text elements out of the box, and *most* screenreaders won't announce them.
#accessibility #a11y
infrequently.org/2024/11/if-not-r…
infrequently.org/2024/11/if-not-r…
We now have two interoperable implementations!
We now have two interoperable implementations!