I offer some approaches you can and should take before you set expectations about the accessibility of your thing — code or article or talk or whatever.
How To Links
When reading about the standard that Mastodon is built on, ActivityPub, I had an idea: why not try and implement some of it with Netlify functions.
A look at some useful and creative ways to style a list.
Learning VoiceOver can feel overwhelming, so I’m here to give you a simple, repeatable process you can follow to make testing with VO as easy as possible.
While making some updates to the site, I did a 404 scan of my link blog and the results were… less than awesome. So I decided to work some Eleventy magic to recover from them.
The primitive Sidebar layout is a kind of quantum layout whereby the sidebar only exists as a sidebar where there is available space.
Color accessibility: tools and resources to help you design inclusive products (opens in a new window or tab)
Resources, tips and tools I regularly use to build and check the color accessibility of my products in one single place for future reference.
I wanted to be able to handle the nav menu without needing to update it manually each time I add a new page.
Be careful when customizing focus styles, don’t forget to test in forced color modes, and always remember that outline is your friend.
There’s a well-established ‘best practice’ that CSS authors should remove units from any 0 value. There are a few common situations where it will break your code.
One of the biggest causes of layout shifts for my clients is late-loading web fonts, let's look at how to optimize them!
Danglers be gone!
Avoiding <img> layout shifts: aspect-ratio vs width & height attributes (opens in a new window or tab)
Deep dive into the mechanics of image rendering and when to use each approach.
Integrating CSS grid into an existing application, especially a large one, is not a trivial affair.
In web development, we frequently need to style elements to visually indicate some state they're in.
Use transparent borders and outlines to assist with high contrast mode (opens in a new window or tab)
This is a quick win, for everyone: the visual design is left almost untouched and it’s accessible.
By, uh, using other people’s CDNs. And put files in it that you want CDNized URLs to.
The user's browsing environment is not predictable. Let's learn how to coexist with that unpredictability by using adaptive, contextual spacing techniques.
I had to build a layout that consists of several rows. In each row are two images with a fixed aspect ratio. The two images should have the same height and fill the entire row.
Have you ever thought about a CSS selector where you check if a specific element exists within a parent?
In this post, I will show how I built a personal photo blog.
Giving visitors to my website who require increased contrast the ‘enhanced’ level of contrast, and all others the ‘minimum’ level in both Light and Dark Mode.
Goodbye, padding hack.
Let's understand why rem is the ideal unit for font size and how setting the root font size to 62.5% can make our lives easier.
Contentful is an immensely well-featured headless content management system, but the density of its featureset can be daunting to integrate with static site generators. The great news is, Eleventy is so well-designed and modular — it doesn’t have to be nearly so challenging.
Let's talk about some handy web form APIs that can make forms much more comfortable to fill out: autocomplete and virtual keyboard options.
There are a few different ways to add images to your page depending on what you care about in regards to what part of the image is displayed, the quality, and the performance.
A sizing scale is a uniform progression of sizes based on a scale—or, more accurately, a ratio.
Could you use CSS Grid to draw “pixels” on a resizable, responsive canvas? (“Canvas” as in 🎨, not as in <canvas> ☺️)?
Discover which SVG patterns we should avoid and which patterns are the most inclusive when comparing different combinations of OSs, browsers, and screen readers.
It’s not always obvious why you should choose one over another.
I wanted to have a single source of truth for our fonts that I could expose as global data and reuse in my templates, front matter, inline CSS, and wherever else they're needed.
Who would have thought; software.gay was still available.
Today, we’re going to look at how to get, set, remove, and check for data attributes on an element.
To respect the reduced motion feature doesn’t necessarily mean removing the animation altogether.
Images are a core part of the web, but they don't come for free.
The new CSS accent-color property makes it quick and easy to roll out our brand colors to certain form inputs by leveraging user agent styles.
Creating website heroes - aka "headers" - with one of my favorite ways to use CSS grid layout: by turning it into a canvas.
If you want your text to be read, set it at a sufficient size! But what is a good font size, and how can you apply it in your web design?
Like other HTML elements, horizontal rules can be styled using CSS (and SVG).
In the real world, content often differs vastly from the neat, perfectly fitting content presented in designs.
Each time I work on a component that needs absolute positioning, I ask myself: is it really necessary?
When the title attribute is useful, and when it's not.
This week I ran into an interesting class of problem that—in hindsight—could use a much better workflow.
So you are starting or restarting that website or webapp from scratch, and you want to do things well.
A straightforward how-to.
Using Git commit time as a reliable time to use as modified or last updated time.
Improve user experience by providing a print style sheet for your website.
This post aims to provide you with all the tools you need to start creating your own generative SVG art/design.
Recently, I shared a Twitter poll about how many uses mobile-first vs desktop-first, and the results were interesting.
The <dl>, or description list, element is underrated. It's used to represent a list of name–value pairs. This is a common UI pattern that, at the same time, is incredibly versatile.
Good alt text means that screen reader users get the same 'meaning' from the page as a fully sighted user. But sometimes that's easier said than done.
Collection of useful HTML components.
Here is how I optimize my website for cognitive accessibility, taking guidance from users and the Web Content Accessibility Guidelines 2.1.
We can’t design the same way we have for this ever-changing landscape, but we can design for content.
The permalink field in our file's front matter allows us to change the output file type of an exported template.
There are some changes being proposed regarding viewport units.
Starting with Version 15, Safari supports the theme-color <meta> tag both on macOS and iOS. That’s exciting news because now the first desktop browser supports this <meta> tag and it also supports the media attribute and the prefers-color-scheme media feature.
In this article, Ahmad Shadeed explains what HSL is, how to use it, and shares some of the useful use-cases and examples that you can use right away in your current projects.
I write a lot, and a lot of my writing is published on other sites. One of the functions of my site is to serve as an archive, so I can keep track of what I’ve done where.
Like many companies, we have a Hack Week at Sentry. In 2017, we coded an app which blared entrance music for anyone who stepped foot in our office. In 2019, we encouraged folks to be nice on the Internet.
When someone says 'SVG animation', what do you picture? From conversations at my workshops I've noticed that most people think of illustrative animation. But SVG can come in handy for so much more than jazzy graphics.
Design for reading: tips for optimizing content for Reader modes and reading apps (opens in a new window or tab)
Our content will not always look the way we expect it or want it to. Many apps, tools, and environments that people use to browse the Web strip our content of our CSS and apply their own styles to it.
Examples of how to implement accessible icons.
Detailed over of the differences and how to use.
How to implement a multi-theme switcher while respecting user's light/dark mode preference by default in Eleventy.
Good overview of Webmentions including how-to and links.
Good overview of various responsive techniques.
Setting up responsive images in Eleventy using Cloudinary.
Using CSS Custom Properties to Adjust Variable Font Weights in Dark Mode (opens in a new window or tab)
Good how to on optical adjustments
How to cover one element with another.
Collection of filters, shortcodes and other tips for extending Eleventy.
Multiple ways to select a random post.
In-depth explainer with a lot of examples.
In-depth data explainer for Eleventy.
Comprehensive look at using sub-grid.
Create multiple files with the same extension.
Good how-to on CSS performance improvements.
Useful explainer with examples.
List of nifty tricks.
Overview of different techniques.
Different ways to handle form labels with a lot of information.
How To Configure Application Color Schemes With CSS Custom Properties (opens in a new window or tab)
In-depth look at ways to implement color scheme.
In-depth look at how to use flexbox-gap.
Nifty trick that could come in handy.
An approach to handle drafts in Eleventy.
Good drop-shadow explainer.
A neat trick for when you need an alternative to the outline property.
CSS techniques to improve site legibility.
In-depth how-to, title says it all.
Useful overview of inline-block
How to add scheduled publishing to 11ty site with a bonus for drafts.
In-depth examples of inventive way to use custom properties
Different options and approaches to implementing a dark mode design and the technical considerations they entail.
Using Nunjucks 'If Expressions' in 11ty to create a simple active navigation state (opens in a new window or tab)
Title says it all.
Quick way to see what has focus.
Different techniques for hiding elements, how each of them affects the accessibility of the content, and how to properly hide checkboxes and radio buttons taking their own accessibility and usability considerations into account to make sure we aren’t leaving any users out.
In this series, we will examine the proper steps to creating forms for the web, how to think about the code we write, and considerations to make along the way.
Have you ever needed to build a UI where a caption needs to slide over an image on hover, revealing more content?
Detailed explainer with examples.
Show and tell examples of making patterns and UI elements more accessible.
Comparison of static versus relative units with examples and why it’s still a big deal.
A guide for modern browsers.
Overview focused on srcset and resolution switching.
Handy list of useful dev tools tips.
Quick how-to for setting up design tokens in Eleventy.
Just because you write code that uses ARIA does not mean the ARIA declarations will work as intended.
Overview of how to ensure forms are accessible.
Progressively enhancing radio buttons with SVG whilst staying accessible (opens in a new window or tab)
In-depth look at how to accessibly use SVGs with radio buttons.
15 things to improve website accessibility.
Comprehensive reference for styling lists.
Handy tricks for text selection control and appearance.
Considerations for opening links in new tab/windows.
Prioritizing users in a crisis: Building the California COVID-19 response site (opens in a new window or tab)
Useful overview of approach for quickly building crisis response site.
Overview of when to use the name attribute.
In-depth look at building a dark mode from design to implementation.
In-depth look at use of minmax() and min().
A look at using math functions instead of media queries to handle flexible layouts.
Video overview of how to create filters in Eleventy.
In-depth look at uses, pros and cons of listboxes and dropdown lists.
Overview of how to and how not to use the tabindex attribute
In-depth look at how DevTools can help with flexbox and grid layouts.
Good overview of when to use ARIA in combination with semantic HTML.
Hands on tutorial on how to use transforms to create diagonal sections.