Sign in

Jhey ʕ·ᴥ· ʔ

@jhey.dev
10K followers 28 following 816 posts

designing interfaces. engineering experiences. many can build it. few can explain it. @shopify brand design studio 👰‍♀️ @seaotta.dev

PostsRepliesMedia
Jhey ʕ·ᴥ· ʔ @jhey.dev · 1h
very good 👏😅
000
Jhey ʕ·ᴥ· ʔ @jhey.dev · 11h
you’re not wrong 😁 tried to make it a little different
020
Jhey ʕ·ᴥ· ʔ @jhey.dev · 20h
static.klipy.com
Sealyx Optimus Prime Ballin'
Alt: Sealyx Optimus Prime Ballin'
001
Jhey ʕ·ᴥ· ʔ @jhey.dev · 22h
newsletter sign up final boss 😅
000
Jhey ʕ·ᴥ· ʔ @jhey.dev · 22h
ha - jus' playin' with <form>s 😅
020
Jhey ʕ·ᴥ· ʔ @jhey.dev · 22h
ha 🙏
010
Jhey ʕ·ᴥ· ʔ @jhey.dev · 22h
thanks! 🙏
020
Jhey ʕ·ᴥ· ʔ @jhey.dev · 29/09/2026
trans<form>er
71154
Jhey ʕ·ᴥ· ʔ @jhey.dev · 22/09/2026
slop grenade™
519622
Jhey ʕ·ᴥ· ʔ @jhey.dev · 22/09/2026
🤝
010
Jhey ʕ·ᴥ· ʔ @jhey.dev · 17/09/2026
🐸
010
Jhey ʕ·ᴥ· ʔ @jhey.dev · 17/09/2026
just locks the spotlight onto the field for :focus-visible but there’s likely an opportunity there 😅
130
Jhey ʕ·ᴥ· ʔ @jhey.dev · 17/09/2026
had to repost because i posted the wrong video, missing a detail 🤦‍♂️ i would rather lose the "likes" and have the correct video on my timeline 🙏 the spotlight is meant to reveal the password, so here's a darker version with the shader tweaked 🤙
4503
Jhey ʕ·ᴥ· ʔ @jhey.dev · 17/09/2026
one does not simply reveal a password 👁️
731934
Jhey ʕ·ᴥ· ʔ @jhey.dev · 15/09/2026
maybe? i made this at the weekend though 😅
110
Jhey ʕ·ᴥ· ʔ @jhey.dev · 15/09/2026
this is no way to talk about your daughter
140
Jhey ʕ·ᴥ· ʔ @jhey.dev · 15/09/2026
get /skills 🥤
2290
Jhey ʕ·ᴥ· ʔ @jhey.dev · 03/07/2026
they were originally scattered throughout the garden, i put them in the garage around 2019 as i didn’t have a skip to get rid of them at the time 😅 who knows when that workbench was put together but the sledgehammer has had the best of that 🙈
030
Jhey ʕ·ᴥ· ʔ @jhey.dev · 15/06/2026
amen do still think there is an element of “because you can, doesn’t mean you should” with a lot of things don’t get me wrong, some of the new stuff is great, but prio for the high value/low effort would be awesome worry about things like if() when seeing some of the :has() out there
190
Jhey ʕ·ᴥ· ʔ @jhey.dev · 10/06/2026
it’s me testing shop stores
150
Jhey ʕ·ᴥ· ʔ @jhey.dev · 16/04/2026
always been painful 💯 wrote an npm package to alleviate the current technique somewhat. was def disappointed when the CaretPosition API didn’t provide a way to do this on keypress as well had kinda hoped we might get something as simple as anchor(caret) + anchor(pointer) 😅
021
Jhey ʕ·ᴥ· ʔ @jhey.dev · 08/04/2026
glad she’s had that effect 🫶 i’ve just cleared myself from the timeline for the beginning of 2026 😅
110
Jhey ʕ·ᴥ· ʔ @jhey.dev · 08/04/2026
closed the lid on the stroller to block the sun but can’t see me. straight out 😴 (sporting best pants today 💯)
191
Jhey ʕ·ᴥ· ʔ @jhey.dev · 26/03/2026
see how far i get, at some point 🥲 jus’ a nice visual that makes me want to look around at different geometric art for inspo 💯
100
Jhey ʕ·ᴥ· ʔ @jhey.dev · 26/03/2026
one of the few things i’ve seen lately where i’m like “i wanna build one of those” 👏 thanks for sharing, thought the sphere was real cool too
110
Jhey ʕ·ᴥ· ʔ @jhey.dev · 18/02/2026
component level view transitions finally 🙌
090
Jhey ʕ·ᴥ· ʔ @jhey.dev · 04/02/2026
does not surprise me tbh would def approach differently now, these demos are over 3 years old would be good to see detection + corner-shape usage too now
110
Jhey ʕ·ᴥ· ʔ @jhey.dev · 04/02/2026
👋 here are a couple (feels like an eternity ago 🥲) [1] "charge" lines (drag nodes) codepen.io/jh3y/pen/Pox... [2] "post-it" board (add + drag + connect in pane) codepen.io/jh3y/pen/MWq...
codepen.io
Supercharged CSS with Anchor Positioning [Chrome Canary] (Drag/Double Click the nodes)
...
150
Jhey ʕ·ᴥ· ʔ @jhey.dev · 26/01/2026
love the "whack a dialog" demo 😅 reminded me of this one i did for CSS day with [popover] 🎈 so true though, fun experimentation has multiple benefits 💯 not only do you learn something, but it's also great for finding API limits or surfacing browser bugs/issues, wish we saw more of it!
050
Jhey ʕ·ᴥ· ʔ @jhey.dev · 21/01/2026
you can import anonymously too but of course doesn’t solve if you are someone writing a bunch of <link> tags that concept of an anonymous layer to wrap reset is sound though, it’s been around a moment. mentioned in this topic that may interest if you haven’t seen it css.oddbird.net/layers/link-...
css.oddbird.net
Cascade Layering of HTML Linked Style Sheets
020
Jhey ʕ·ᴥ· ʔ @jhey.dev · 20/01/2026
another way: combine import with layer like you can for 3rd party style overrides @import "reset.css" layer(reset); @layer normalize, reset, base, etc;
230
Jhey ʕ·ᴥ· ʔ @jhey.dev · 15/01/2026
🙏🙏🙏
000
Jhey ʕ·ᴥ· ʔ @jhey.dev · 15/01/2026
2025: made stuff 2026: make more stuff 🧑‍🍳
41678
Jhey ʕ·ᴥ· ʔ @jhey.dev · 10/01/2026
the ideal would be a mix of this + offset-path cause they both have their trade offs/limits 🥲
000
Jhey ʕ·ᴥ· ʔ @jhey.dev · 10/01/2026
yeah, textPath gets overlooked 💯 it’s a shame there isn’t a nice way to magically scale the text to fit a path neatly (the scale/blend trick is a nice touch)
110
Jhey ʕ·ᴥ· ʔ @jhey.dev · 20/12/2025
almost time to sit down and put together the 2025 demo reel 👨‍🍳 2024 👇 (not posted here)
0420
Jhey ʕ·ᴥ· ʔ @jhey.dev · 15/12/2025
i have just the one for you that i’ve been working on 🙌 a definite gsap to the rescue demo!
120
Jhey ʕ·ᴥ· ʔ @jhey.dev · 12/12/2025
i will say, i think it looks great 👏 works great for me. one small thing i see that doesn’t happen every single time but if you open a demo, sometimes you get a flash of the page before it fades in on the page transition. that’s Safari iOS.
120
Jhey ʕ·ᴥ· ʔ @jhey.dev · 11/11/2025
they were unbelievable, would def make the trip to Leeds for them alone
020
Jhey ʕ·ᴥ· ʔ @jhey.dev · 11/11/2025
it’s true, steph still talks about these potatoes
130
Jhey ʕ·ᴥ· ʔ @jhey.dev · 11/11/2025
this event changed my life, our lives 🥹🫶 @seaotta.dev
140
Jhey ʕ·ᴥ· ʔ @jhey.dev · 24/10/2025
it is important to know which order you'll be going in
010
Jhey ʕ·ᴥ· ʔ @jhey.dev · 23/10/2025
this is the weird case wherre a rudimentary infinite scroller works "seamlessly" until scroll-snap enters the room which starts to intefere with things instead of battling it, i'm jus' gonna try and take it out of the equation 😅
110
Jhey ʕ·ᴥ· ʔ @jhey.dev · 23/10/2025
in unrelated news, i'm writing my own scroll-snap this week, ya know, for browser parity 😅
110
Jhey ʕ·ᴥ· ʔ @jhey.dev · 23/10/2025
this 💯 my one hope/idea around this that’s related would’ve been an extension to anchor positioning that was like anchor(pointer x)/anchor(pointer y) felt like a way that would open up easy pointer position passing to styles 🤔
000
Jhey ʕ·ᴥ· ʔ @jhey.dev · 23/10/2025
super easy CSS sticky scroll hide/reveal 🧑‍🍳 .sticky-atc { position: fixed; inset: auto 0 0 0; transition: translate 0.26s cubic-bezier(.55,0,.67,1.25); /* hide when scrolling down */ @container scroll-state(scrolled: bottom) { translate: 0 100%; transition-delay: 0.5s; } }
0472
Jhey ʕ·ᴥ· ʔ @jhey.dev · 22/10/2025
haha – well, it worked with the API from a couple of years back then it had to be switched to [popover] + <button> because the API moved and we lost some of the functionality hooks we had + it needed to work in my deck i'll have to try and piece it together again
010
Jhey ʕ·ᴥ· ʔ @jhey.dev · 22/10/2025
small details that matter 🧑‍🍳 use CSS pseudoelements to bridge the :hover gap w/ :has() + inset a:has(+ .dots) a::after, .dots + a::after { position: absolute; content: ''; } a:has(+ .dots) a::after { inset: 0 -50% 0 100%; } .dots + a::after { inset: 0 100% 0 -50%; }
2557
Jhey ʕ·ᴥ· ʔ @jhey.dev · 22/10/2025
jus' see a cat with the biggest lips sliding to a halt
290
Jhey ʕ·ᴥ· ʔ @jhey.dev · 22/10/2025
correct ✅ although i've been lookin' at some other options too i really want some more "editing" type features so i often end up exporting and then doing other things in Screenflow
020