Introducing Claude Design by Anthropic Labs: make prototypes, slides, and one-pagers by talking to Claude.
Powered by Claude Opus 4.7, our most capable vision model. Available in research preview on the Pro, Max, Team, and Enterprise plans, rolling out throughout the day.
I can not stress enough how tough it is to build a web app that works well across browsers, mobile devices, and input methods while staying accessible and performant.
Hug your frontend developer.
Future CSS Tip! 🍏
You can combine scroll-driven animations with background-clip to create gradient text reveals 😍
p {
animation-name: move-bg, fade-in;
animation-fill-mode: both;
animation-timing-function: linear;
animation-timeline: scroll(root);
animation-range: 0 100vh, 40vh 100vh;
}
/* Multiple animations with shared timeline and different ranges 👀 */
keyframes move-bg {
to { background-position: 50% 100%; }
}
keyframes fade-in {
0% { opacity: 0; }
}
The trick here is creating a large background with a radial gradient and using background-clip: text on the element with color: transparent ✨
p {
background:
radial-gradient(50% 100% at 50% 100%, hsl(var(--accent, 10) 90% 95%), hsl(var(--accent, 10) 90% 50%), transparent 50%);
background-size: 400% 600%;
-webkit-background-clip: text;
background-position: 50% 0;
}
Then we animate the background-position to reveal the colorful part that reveal the text 😎
Another #AppleEvent related scrolling demo coming tomorrow 😅
@CodePen link below! 👇
🔥 CSS Grid Hot Tip
:before and :after are first class CSS Grid items, this “lines on either side” design can easily be accomplished in ~10 lines of CSS
Future CSS Tip! ⚡️
You can combine CSS :has() & :user-valid/:user-invalid to power <form> micro interactions 😍
No JavaScript. Watch for the little animations ✨
label {
--color: var(--default);
color: var(--color);
border-color: var(--color);
}
.group:has(:user-valid) {
--color: var(--valid);
}
.group:not(:focus-within):has(:user-invalid) {
--color: var(--invalid);
}
These new pseudo-elements only fire once an input has been interacted with. This means you don't need to do things like the "transparent :placeholder-shown" hack from before 🙌
Then you can lean into the power of scoped custom properties and change the theme based on the status of a form group 😎
It's a nice little touch. But remember, don't rely on color to communicate things!
@CodePen link below! 👇
Y'all know I just genuinely like Next.js, right?
Like... I would use it if I didn't work at Vercel.
Actually, wait, I did do that. I helped my last company move from Express + React to Next.js self-hosted on Kubernetes.
It's not that deep 😁 You can be excited about tech.