CSS to speech: alternative text for CSS-generated content

✨ This post is sponsored by everyone who has bought my Practical Accessibility course. ✨ The CSS ::before and ::after pseudo-elements are used to insert presentational content before and after (respectively) existing content in an HTML element. The content property is used to de … | Continue reading


@sarasoueidan.com | 9 months ago

🎥 New (Video) Podcast: "Navigating the World of Web Accessibility with Sara Soueidan", with Kevin Powell

Kevin and I been planning this podcast for months and our schedules finally aligned and we made it happen. We originally planned to chat for a bit… but we had so much fun that almost two hours flew by without us noticing 😅 We covered: Defining web accessibility and why i … | Continue reading


@sarasoueidan.com | 9 months ago

CSS-only scrollspy effect using scroll-marker-group and :target-current

✨ This post is sponsored by everyone who has bought my Practical Accessibility course. ✨ The Bootstrap Scrollspy—now commonly known as just “Scrollspy”—is a feature that automatically updates navigation links based on the user’s scroll position to indicate which link is currently … | Continue reading


@sarasoueidan.com | 10 months ago

Are 'CSS Carousels' accessible?

✨ This post is sponsored by each and every one of you who has bought my Practical Accessibility course. ✨ “CSS Carousels” were formally introduced a few weeks ago in an article on the Chrome for developers blog, and quite a few people have—understandably—shared the excitement sin … | Continue reading


@sarasoueidan.com | 1 year ago

Are 'CSS Carousels' accessible?

✨ This post is sponsored by everyone who has bought my Practical Accessibility course. ✨ “CSS Carousels” were formally introduced a few weeks ago in an article on the Chrome for developers blog, and quite a few people have shared the excitement since then. When I first heard of t … | Continue reading


@sarasoueidan.com | 1 year ago

Tag, You're It

Hidde tagged me into this chain of blog posts about blogging. I’ve really been enjoying reading these posts by other people. So I was happy to be tagged. The idea is that you answer the same series of questions about your blog. So, here we go. Why did you start blogging in the fi … | Continue reading


@sarasoueidan.com | 1 year ago

Tag, You're It

Why did you start blogging in the first place? I started blogging when I was still learning front-end development—specifically CSS—back in 2012. I was learning a lot and writing what I was learning as a way to organize my thoughts and solidify my learnings, and at some point I re … | Continue reading


@sarasoueidan.com | 1 year ago

Accessible notifications with ARIA Live Regions (Part 2)

In the first part of this chapter we discussed what we might need live regions for, and how to create them using HTML and ARIA. In this part, we’re going to discuss what live regions are not suitable for and why, and we’re going to discuss more robust ways to implement some commo … | Continue reading


@sarasoueidan.com | 2 years ago

Accessible notifications with ARIA Live Regions (Part 1)

In this chapter, we’re going to learn about ARIA live regions — the accessible notifications system that enables us to make dynamic web content more accessible to screen reader users. Without live regions, some rich web applications would be more challenging to use for screen rea … | Continue reading


@sarasoueidan.com | 2 years ago

Accessible notifications with ARIA Live Regions (Part 1)

In this chapter, we’re going to learn about ARIA live regions — the accessible notifications system that enables us to make dynamic web content more accessible to screen reader users. Without live regions, some rich web applications would be more challenging to use for screen rea … | Continue reading


@sarasoueidan.com | 2 years ago

Accessible notifications with ARIA Live Regions (Part 2)

In the first part of this chapter we discussed what we might need live regions for, and how to create them using HTML and ARIA. In this part, we’re going to discuss what live regions are not suitable for and why, and we’re going to discuss more robust ways to implement some commo … | Continue reading


@sarasoueidan.com | 2 years ago

Imagine you visit a website and you want to browse it for some content. You want to buy something; or maybe book a flight somewhere. And as you move your cursor onto the page, it suddenly disappears. Your hand may be still on the mouse, and you’re moving the mouse across the scre … | Continue reading


@sarasoueidan.com | 2 years ago

Setting up a screen reader testing environment on your computer

When you’re designing and developing for accessibility, performing manual testing using a screen reader is important to catch and fix accessibility and usability issues that cannot be caught by automated accessibility checkers. You can catch the majority of issues by performing t … | Continue reading


@sarasoueidan.com | 3 years ago

Setting up a screen reader testing environment on your computer

When you’re designing and developing for accessibility, performing manual testing using a screen reader is important to catch and fix accessibility and usability issues that cannot be caught by automated accessibility checkers. You can catch the majority of issues by performing t … | Continue reading


@sarasoueidan.com | 3 years ago

A guide to designing accessible, WCAG-compliant focus indicators

Continue reading


@sarasoueidan.com | 4 years ago

The CSS prefers-color-scheme user query and order of preference

Continue reading


@sarasoueidan.com | 4 years ago

The CSS prefers-color-scheme user query and order of preference

I spent some time in Reeder app this morning, catching up with RSS and the latest articles published by my favorite blogs. I was reading Scott O’Hara’s article about using JavaScript to detect high contrast and dark modes, which includes a small, very useful script to do exactly … | Continue reading


@sarasoueidan.com | 4 years ago

In Quest of Search

Continue reading


@sarasoueidan.com | 4 years ago

In Quest of Search

Update: There now exists a native HTML element that maps to the ARIA search role. 🎊 As of March 24th, 2023, the HTML specification added a new grouping element: The element. Read more about the element in Scott’s introductory blog post. There’s been a recent discussion … | Continue reading


@sarasoueidan.com | 4 years ago

A guide to designing accessible, WCAG-compliant focus indicators

Continue reading


@sarasoueidan.com | 4 years ago

I’m curating the programme for an upcoming accessibility-focussed conference ✨

Continue reading


@sarasoueidan.com | 4 years ago

Working around the viewport-based fluid typography bug in Safari

Continue reading


@sarasoueidan.com | 4 years ago

A couple of ways to highlight code syntax in Apple Keynote slides

Continue reading


@sarasoueidan.com | 5 years ago

A couple of ways to highlight code syntax in Apple Keynote slides

Apple Keynote doesn’t come with code syntax highlighting built in. I really wish it did, and hope that Apple would at some point add this feature, especially considering how many developers and engineers use Keynote to create talk slides. Seven years ago, I used to take screensho … | Continue reading


@sarasoueidan.com | 5 years ago

Design for reading: tips for optimizing content for Reader modes and reading apps

Continue reading


@sarasoueidan.com | 5 years ago

Design for reading: tips for optimizing content for Reader modes and reading apps

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. And unless we always keep that in mind, we risk creating incomplete or even bro … | Continue reading


@sarasoueidan.com | 5 years ago

Component-level art direction with CSS Container Queries

Continue reading


@sarasoueidan.com | 5 years ago

Component-level art direction with CSS Container Queries

Container Queries (CQ) allow us to change the styles of a component so it responds to the size of its nearest container. With CQ, we can change how an element looks based on where on a page it is placed and how much horizontal space it occupies. A lot about a design pattern could … | Continue reading


@sarasoueidan.com | 5 years ago

Working around the viewport-based fluid typography bug in Safari

Continue reading


@sarasoueidan.com | 5 years ago

Not Your Typical Horizontal Rules

Continue reading


@sarasoueidan.com | 5 years ago

Redesigning and rebuilding my Web site from the ground up

Continue reading


@sarasoueidan.com | 5 years ago

Not Your Typical Horizontal Rules

Continue reading


@sarasoueidan.com | 5 years ago

Accessible Text Labels For All

Continue reading


@sarasoueidan.com | 5 years ago

Accessible Text Labels For All

My talk Applied Accessibility: Practical Tips for Creating more Accessible Front-Ends is now available to watch online. This blog post is an extended transcript for a section of the talk, in which I discuss how to create more descriptive button (and/or link) text labels that impr … | Continue reading


@sarasoueidan.com | 5 years ago

How I set up Glyphhanger on macOS for optimizing and converting font files for the Web

Continue reading


@sarasoueidan.com | 5 years ago

How I set up Glyphhanger on macOS for optimizing and converting font files for the Web

I can't count the number of times I've tried installing a command line tool on my machine, only to find myself going down a black hole of node modules & dependencies, and a seemingly non-ending list of error messages in the terminal. This would go on for a while before I finally … | Continue reading


@sarasoueidan.com | 5 years ago

"Yes or No?" — One Checkbox vs Two Radio Buttons.

Continue reading


@sarasoueidan.com | 5 years ago

Understanding SVG Coordinate Systems and Transformations

Continue reading


@sarasoueidan.com | 5 years ago

Global and Component Style Settings with CSS Variables

Continue reading


@sarasoueidan.com | 5 years ago

Inclusively Hiding & Styling Checkboxes and Radio Buttons

Continue reading


@sarasoueidan.com | 6 years ago

Inclusively Hiding & Styling Checkboxes and Radio Buttons

Checkboxes and radio buttons are two common examples of interactive form elements that we desperately want to have full control over styling but we don’t. So we’ve been hacking our way around styling them by hiding said elements with CSS and visually replacing them with pseudo-el … | Continue reading


@sarasoueidan.com | 6 years ago

Optimizing keyboard navigation using tabindex and ARIA

Continue reading


@sarasoueidan.com | 6 years ago

Optimizing keyboard navigation using tabindex and ARIA

The faster the user can navigate your UI the better. The faster they can get to the content they need, the better. Therefore, the less steps they have to go through, the more efficient their overall experience with the UI will be. And this applies to keyboard tabbing, too: the le … | Continue reading


@sarasoueidan.com | 6 years ago

Global and Component Style Settings with CSS Variables

Continue reading


@sarasoueidan.com | 6 years ago

What a Year of Learning and Teaching Accessibility Taught Me

Continue reading


@sarasoueidan.com | 6 years ago

What a Year of Learning and Teaching Accessibility Taught Me

(This article was originally published on 24accessibility). A few years ago I didn't know what the term "accessibility" meant. I built Web sites that were partially inaccessible because I didn't know better. Fast forward to today, I know enough to be able to write, speak and run … | Continue reading


@sarasoueidan.com | 6 years ago

Case Study: Implementing Accessible Data Charts for the Khan Academy 2018 Annual Report

Continue reading


@sarasoueidan.com | 6 years ago

Case Study: Implementing Accessible Data Charts for the Khan Academy 2018 Annual Report

A few months ago I teamed up with SuperFriendly to create an accessible micro-site for the Khan Academy 2018 Annual Report. The site is a very beautiful visual representation of Khan’s real-life impact on world education, their end-of-year financial reports, and more. By nature, … | Continue reading


@sarasoueidan.com | 6 years ago