PS. If you want to learn how to make beautiful <textarea>s like in the GIF with nothing but standard HTML and CSS, I'll be sharing those tips in the future as well. So be sure to follow ๐
07.12.2025 17:00 โ ๐ 2 ๐ 0 ๐ฌ 0 ๐ 0@fractaledmind.bsky.social
PS. If you want to learn how to make beautiful <textarea>s like in the GIF with nothing but standard HTML and CSS, I'll be sharing those tips in the future as well. So be sure to follow ๐
07.12.2025 17:00 โ ๐ 2 ๐ 0 ๐ฌ 0 ๐ 0Full CSS snippet:
```
textarea {
field-sizing: content;
min-block-size: attr(rows rlh);
}
```
`field-sizing` docs: developer.mozilla.org/en-US/docs/...
`attr()` function docs: developer.mozilla.org/en-US/docs/...
The `min-block-size` rule uses the new, more powerful `attr()` CSS function to automatically convert the rows attribute into the default height, because content field-sizing <textarea>s will *ignore* the rows attribute.
07.12.2025 17:00 โ ๐ 0 ๐ 0 ๐ฌ 1 ๐ 0Coming in the next version of Safari, and already in Chrome and Edge, you can now create <textarea>s that auto-grow with the `field-sizing: content` rule.
#StylishHTML
PS. If you want to learn how to make beautiful listboxes like in the GIF with nothing but standard HTML and CSS, I'll be sharing those tips in the future as well. So be sure to follow ๐
06.12.2025 16:57 โ ๐ 2 ๐ 0 ๐ฌ 0 ๐ 0Learn more at MDN: developer.mozilla.org/en-US/docs/...
Full CSS snippet:
```
::picker(select) {
scrollbar-color: lightgray transparent;
scrollbar-width: thin;
}
```
Have a small scroll container where you want to de-emphasize the scrollbar, like in a popover? Say hello to `scrollbar-color` and `scrollbar-width`
#StylishHTML
PS. If you want to learn how to make beautiful popovers like in the GIF with nothing but standard HTML and CSS, I'll be sharing those tips in the future as well. So be sure to follow ๐
05.12.2025 16:57 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0Dark-themed code snippet showing two HTML lines: a button with popovertarget="--dropdown-example" and a div id="--dropdown-example" popover.
Requires double-dashed IDs in your HTML:
```
<button popovertarget="--dropdown-example"></button>
<div id="--dropdown-example" popover></div>
```
Dark-themed code editor showing a CSS snippet defining [popovertarget] and [popover] rules with anchor-name, position-anchor, top: anchor(bottom), and left: anchor(left).
Full CSS snippet:
```
[popovertarget] {
anchor-name: attr(popovertarget type(<custom-ident>));
}
[popover] {
position-anchor: attr(id type(<custom-ident>));
top: anchor(bottom);
left: anchor(left);
}
```
Double-dashed IDs and the enhanced `attr()` CSS function allow us to bind popovertargets with their popovers without having to create distinct anchor-names.
Learn more at MDN: developer.mozilla.org/en-US/docs/... and developer.mozilla.org/en-US/docs/...
#StylishHTML
PS. If you want to learn how to make beautiful <dialog>s like in the GIF with nothing but standard HTML and CSS, I'll be sharing those tips in the future as well. So be sure to follow ๐
04.12.2025 17:03 โ ๐ 0 ๐ 0 ๐ฌ 0 ๐ 0Dark code editor showing a CSS rule: body:has(dialog:modal) { overflow: hidden; } with syntax-highlighted selectors and properties.
Full CSS snippet:
```
body:has(dialog:modal) {
overflow: hidden;
}
```
Prevent scrolling when a modal <dialog> is open with pure CSS using the `:modal` CSS pseudo-class. Mix with `body:has` and you're good to go!
Learn more at MDN: developer.mozilla.org/en-US/docs/...
#StylishHTML
PS. If you want to learn how to make beautiful breadcrumb <nav>s like in the GIF with nothing but standard HTML and CSS, I'll be sharing those tips in the future as well. So be sure to follow ๐
03.12.2025 17:39 โ ๐ 2 ๐ 0 ๐ฌ 0 ๐ 0Dark code editor showing CSS: body selector with scrollbar-gutter: stable and a nested &:has(:popover-open) rule setting overflow: hidden.
Full CSS snippet:
```
body {
scrollbar-gutter: stable;
&:has(:popover-open) {
overflow: hidden;
}
}
```
With `scrollbar-gutter: stable` in place, you get this lovely behavior instead.
03.12.2025 17:03 โ ๐ 0 ๐ 0 ๐ฌ 1 ๐ 0Want to avoid layout shift when you remove scrolling on popover or dialog opening?
Simple, use the new `scrollbar-gutter: stable` CSS rule on your scroll container (likely <body>).
Learn more at MDN: developer.mozilla.org/en-US/docs/...
#StylishHTML
I love @rauno.bsky.social's style and taste, so I remixed a recent combobox design of his as a simple <select> using the new customizable select styling features coming to Baseline:
play.tailwindcss.com/9JsjWJyk9a
PS. Creating the effect of the picker wrapping and surrounding the select took some creative problem-solving, but Iโm quite happy with the result. Key limitation is that you canโt animate the picker beautifully with this approach.
30.11.2025 12:17 โ ๐ 2 ๐ 0 ๐ฌ 0 ๐ 0I love @rauno.bsky.social's style and taste, so I remixed a recent combobox design of his as a simple <select> using the new customizable select styling features coming to Baseline:
play.tailwindcss.com/9JsjWJyk9a
Morphlex now has a new algorithm that produces extremely optimal DOM morphs for inserts, removals and sorts. github.com/yippee-fun/m...
01.11.2025 11:34 โ ๐ 16 ๐ 2 ๐ฌ 1 ๐ 0This is what I have seen typically as the primary value. Seems less valuable in the age of AI. Also, requires nearly 100% adoption of typing throughout the code base to have the full graph. I still find runtime typing a stronger value proposition, especially for a dynamic language like Ruby
31.10.2025 22:03 โ ๐ 2 ๐ 0 ๐ฌ 0 ๐ 0Genuine question: what is the essential benefit of static type checking? I understand the core benefit of runtime type checkingโto guarantee that certain states, inputs, outputs are never allowed to flow thru the program. But Iโve never quite grokked what makes static type checking valuable
31.10.2025 15:02 โ ๐ 1 ๐ 0 ๐ฌ 3 ๐ 0Nick, you need to check out www.youtube.com/watch?v=G9rx... which is a demo of what we are building with github.com/yippee-fun/e...
29.10.2025 17:11 โ ๐ 0 ๐ 0 ๐ฌ 1 ๐ 0Deep magics. But built on top of `require-hooks` gem.
26.10.2025 15:41 โ ๐ 0 ๐ 0 ๐ฌ 0 ๐ 0And we continue writing that love letter with the new Empirical gem, which leverages the power of pre-processing Ruby at boot time to bring a terse and elegant DX for defining methods with runtime typing constraints.
github.com/yippee-fun/...
Once you then embrace that you can create your own objects that respond to === and encode custom rules of โset inclusionโ, you have everything you need to a rich and robust runtime type system. The Literal gem is @joel.drapper.me and Iโs love letter to ===
github.com/yippee-fun/...
This post from @honeybadger.io is about runtime types, it just doesnโt know it! It does a good job of demonstrating the simplicity and power of Rubyโs === interface, and a runtime type is simply โan object that responds to ===.โ
www.honeybadger.io/blog/level-...