Accessibility
Tabindex: What it is, how it works, and when to use it
Tabindex is an HTML attribute that controls keyboard focus and can hurt or support accessibility depending on how you use it.
It can add focus to non-interactive elements, rearrange the focus order, and remove focus from interactive elements.
Just because tabindex can add, rearrange, and remove focus, doesn’t mean it should. This is where the first rule of ARIA, don’t use ARIA, comes into play with tabindex.
What this rule really means is to avoid using tabindex unless it’s needed. It should always be a well-thought-out decision and not added willy-nilly because it might be needed.
Implement WCAG Rules in Your Infographics
Create WCAG-compliant infographics with expert tips on alt text, contrast, and screen reader support. Make your visuals accessible to all.
CSS
A guide to Scroll-driven Animations with just CSS
CSS animations have come a long way since Apple first introduced them to the web in 2007. What started as simple effects like animating from one color to another has turned into beautiful, complex images twisting and flying across the page.
But linking these animations to user behavior like scrolling has traditionally required third-party libraries and a fair bit of JavaScript, which adds some complexity to your code. But now, we can make those animations scroll-driven with nothing more than a few lines of CSS.
Better CSS Shapes Using shape() — Part 4: Close and Move
This is the fourth post in a series about the new CSS shape()
function. So far, we’ve covered the most common commands you will use to draw various shapes, including lines, arcs, and curves. This time, I want to introduce you to two more commands: close
and move
. They’re fairly simple in practice, and I think you will rarely use them, but they are incredibly useful when you need them.
:nth-last-child
Select elements by counting backwards from the end using the :nth-last-child
pseudo-class selector.
CSS Intelligence: Speculating On The Future Of A Smarter Language
CSS has evolved from a purely presentational language into one with growing logical powers — thanks to features like container queries, relational pseudo-classes, and the if()
function. Is it still just for styling, or is it becoming something more? Gabriel Shoyombo explores how smart CSS has become over the years, where it is heading, the challenges it addresses, whether it is becoming too complex, and how developers are reacting to this shift.
Tailwind is the worst form of CSS, except for all the others
I think there’s a reason that every Tailwind take is spicy. It’s that Tailwind is a tool with strong opinions. Some developers find these opinions unnecessary, or even abrasive. Others find themselves and their teams way more productive.
After years of using it in production, I’m definitely in the “more productive” camp… but I get it. I get why it feels unnecessary if you’re comfortable with CSS. I get why Tailwind’s opinions come across as abrasive. And I’m not here to change your mind. But maybe I can offer you a fresh perspective.
Get the index of an element within its parent
With CSS, you can use the new sibling-index()
function to get the position of any element relative to all its sibling elements. You can also rely on sibling-count()
to get the number of siblings.
@property - Register custom CSS properties with specific syntax to enable smooth animations and transitions
The @property
at-rule allows us to register custom CSS properties with specific syntax. This opens up being able to animate the values of custom properties, which can make previously unanimateable things, well, animated.
Without @property
, custom properties are treated as strings because value, or values, you’d use are valid. By registering them, we tell CSS what the value is, such as a number, which is animateable.
JavaScript
What Every React Developer Should Know About Signals
React is by far the most popular JavaScript library to build web UIs. But Signals and React haven't always been on the best terms. As they say "History is written by the Victors". Today we set the record straight.
ReactJS From Zero To Hero Free Online Book
So, you want to learn React? You've come to the right place! This isn't just another collection of articles; it's a comprehensive, book-level guide designed to take you from the absolute fundamentals of React to its most advanced concepts. Whether you're dreaming of building dynamic web applications, supercharging your frontend skills, or just curious about one of the most popular JavaScript libraries in the world, we've got you covered.
What is popover=hint?
If you’ve been following along with advancements in HTML, such as the new popover API, you may have noticed that a new popover type (hint
) recently landed in Chrome 133 (January 2025). But what exactly does it do?
The short answer is: popover="hint"
allows you to open an unrelated hint
popover without closing other popovers in the stack. This means you can have an existing stack of auto
popovers remain open while still displaying a hint
popover.
Angular Signals: A New Mental Model for Reactivity, Not Just a New API
Discover how Angular Signals revolutionize data flow with reactive variables, not streams. Learn production gotchas, when to choose Signals over RxJS, and real-world patterns.
UX
Stop Hiding My Controls: Hidden Interface Controls Are Affecting Usability
In the early 1960s, Douglas Engelbart first introduced the notion of "knowledge in the world" versus "knowledge in the head" for computer interfaces—an idea that was later formalized and popularized by Donald Norman in his seminal book The Psychology of Everyday Things. From an interface design standpoint, knowledge in the world simply means that the controls you need are visible, and the identification and operation of these controls can be done through recognition rather than recall.
Fast-forward 40 years and we are frequently reverting to a state where significant knowledge in the head is required to perform even rudimentary tasks on a computerized device.
24 UX Design Principles of the Build-For Framework
The Build-For Framework is a human-first, empathy-driven methodology based on intentionality in design. This framework serves as a guide for UX designers, providing a checklist to ensure their design process remains purposeful and customer centered. While creativity and spontaneity are essential in UX design, we need to balance them with structured principles to maintain practicality and intentionality throughout the design process.
Stop Using Hero Images! They’re Killing Your UX
Hero images are the web’s prettiest dead weight—slow, vague, and visually overused. It’s time to stop decorating your homepage and start saying something that actually matters.
Miscellaneous
Web3Forms - Free Contact Form to Email Service API
Receive your html contact form submissions directly in your email inbox using our contact form api service without any server or backend code. Its free!
Email obfuscation: What works in 2025?
Here are some of the best techniques for keeping email addresses hidden from spammers—along with the statistics on how likely they are to be broken.
Last updated: July 1, 2025.
Web Awesome - open-source web components
Web Awesome is the biggest open-source library of meticulously designed, highly customizable, and framework-agnostic UI components
- Entirely native - Built on web standards to last for years to come. No excess tooling. No third-party bloat.
- Accessibility forward - Build a website that everyone can use. Designed to be inclusive and usable by everyone.
- Fully customizable - Show off your own style with components that consistently adapt to your theme.
- Proudly open source - Use Web Awesome Free however you like. Always free, always open source.
The Architect’s Guide to Micro-Frontends: Module Federation with React & Angular
Discover how enterprise architects can implement scalable micro-frontend architectures using Module Federation in React and Angular. Explore real-world strategies for integration, deployment, state management, and cross-framework interoperability to build resilient, future-ready frontends.
A Small Guide for Writing Comments in Front-end Code
Hygenic code is commented code. But often, it can be difficult to understand where, when, or even how to comment your front end code. So I'd like to share a small guide for writing comments in your front-end that makes the developer experience better for everyone.