Nexvyn (@nexvyn) header
Nexvyn (@nexvyn) profile picture

Design Engineer https://nitter.cf/t.co/ZkQxbAwI7F https://nitter.cf/t.co/Fzq4yZT5u4

Joined June 2024
Photo by Nexvyn (@nexvyn)Photo by Nexvyn (@nexvyn)Photo by Nexvyn (@nexvyn)Photo by Nexvyn (@nexvyn)Photo by Nexvyn (@nexvyn)Photo by Nexvyn (@nexvyn)Photo by Nexvyn (@nexvyn)Photo by Nexvyn (@nexvyn)Photo by Nexvyn (@nexvyn)Photo by Nexvyn (@nexvyn)
Pinned Tweet
Tiny Swords game and lotus pond on my portfolio
21
14
4
299
10,996
Just finished FitAir and submitted it. Now waiting on the 14-day review. Designed the onboarding. One is the concept, one is the real version. Which one do you like more?
2
1
10
429
tried doing the brand for FitAir.
1
1
10
371
A menu that scales in from its own centre looks like it came from nowhere. Grow it out of the button you clicked instead. .menu { transform-origin: top right; transition: scale 200ms ease-out; } Do you set the origin on your menus?
3
38
987
css tip: scale buttons down while they're pressed. a click has two halves, the press and the release. most buttons only answer the release. a small scale on :active answers the press, so it feels like the button gave under your finger. button { transition: scale 120ms ease-out; } button:active { scale: 0.96; }
1
4
87
2,729
css tip: make the exit faster than the enter. when a menu opens, people are waiting for it. when it closes, they've already moved on. a slow exit just gets in the way. a transition uses the timing of the state it's going to, so put the exit timing on the base rule. .menu { opacity: 0; transition: opacity 200ms ease-out; } .menu.open { opacity: 1; transition-duration: 320ms; }
4
2
77
2,252
thank me later runeicons.com/
4
4
64
9,144
Nexvyn retweeted
UI tip: Don’t close submenus the moment the cursor touches another row. Nobody moves right then down. They cut the corner, brush the next row, and the submenu they wanted disappears. Draw a triangle from the cursor to the submenu’s near edge. While the cursor stays inside it, keep the submenu open. const heading = inTriangle(pointer, lastPoint, subTopLeft, subBottomLeft); if (overAnotherRow && !heading) openSubmenu(row);
4
2
1
59
2,143
UI tip: Don’t close submenus the moment the cursor touches another row. Nobody moves right then down. They cut the corner, brush the next row, and the submenu they wanted disappears. Draw a triangle from the cursor to the submenu’s near edge. While the cursor stays inside it, keep the submenu open. const heading = inTriangle(pointer, lastPoint, subTopLeft, subBottomLeft); if (overAnotherRow && !heading) openSubmenu(row);
4
2
1
59
2,143
Nexvyn UI now has blocks. 32 real page sections for React, Next.js and Tailwind: banners, CTAs, footers, FAQs, logins, sidebars and social proof. Copy. Paste. Ship. All blocks and components are free and open source. ui.nexvyn.dev/
Building a component library where motion actually communicates. Instead of just decorating the interface, every animation has a clear reason for existing.
1
4
14
605
vibecoders thank me later. ui.nexvyn.dev/
7
5
1
147
23,827
painted a lil antarctic footer w aurora and penguins
10
482
css tip: stop trying to animate height to auto. the browser can't animate to height: auto, so the panel just jumps open. animate grid-template-rows from 0fr to 1fr instead. the row grows to the real height of the content, whatever it is. .panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 300ms ease-out; } .panel.open { grid-template-rows: 1fr; } .panel > div { overflow: hidden; }
6
9
164
5,087
made a new x card for my portfolio. hover twitter on nexvyn.dev
3
21
1,056
css tip: use tabular-nums for numbers that change. most fonts give each digit its own width, so a timer or counter wobbles as the digits change. tabular-nums gives every digit the same width, so the number stays still. .timer { font-variant-numeric: tabular-nums; }
3
24
203
6,449
i just designed and built my first mobile app releasing soon 👀
7
1
22
675
css tip: tooltips that know when they’re about to get clipped. new way (flips automatically): .trigger { anchor-name: --tip; } .tooltip { position: fixed; position-anchor: --tip; position-area: right; position-try-fallbacks: flip-inline, flip-block; } old way (gets cut off near edges): position: absolute; left: 100%; translate: 0 -50%;
4
25
390
10,171
older browsers, do it in js: render it outside (portal or popover) measure the viewport space flip to the side that fits slide it back inside re-measure on scroll and resize either way: point the arrow at the trigger animate from the arrow escape closes it, hover onto it, show on focus watch out: overflow: hidden parents clip it anywhere anchor positioning needs chrome 128, firefox 147, safari 26 fixed triggers? just pick the open side
1
2
313