<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Frontend × Accessibility on Codeslog</title>
    <link>https://www.codeslog.com/en/series/frontend--accessibility/</link>
    <description>Recent content in Frontend × Accessibility on Codeslog</description>
    <image>
      <title>Codeslog</title>
      <url>https://www.codeslog.com/images/default-cover.png?v=20260114T1436</url>
      <link>https://www.codeslog.com/images/default-cover.png?v=20260114T1436</link>
    </image>
    <generator>Hugo -- 0.168.0</generator>
    <language>en-US</language>
    <lastBuildDate>Sat, 24 Oct 2026 02:02:00 +0900</lastBuildDate>
    <atom:link href="https://www.codeslog.com/en/series/frontend--accessibility/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Accessible Modals: From dialog showModal() to Focus Traps</title>
      <link>https://www.codeslog.com/en/posts/modal-dialog-implementation/</link>
      <pubDate>Sat, 24 Oct 2026 02:02:00 +0900</pubDate>
      <guid>https://www.codeslog.com/en/posts/modal-dialog-implementation/</guid>
      <description>Compare dialog showModal() with a div modal: inert, focus trap, ESC, scroll lock, focus restoration, and why Tab leaves a dialog (measured in Chrome).</description>
    </item>
    <item>
      <title>Form Validation Timing: From Blur to aria-invalid</title>
      <link>https://www.codeslog.com/en/posts/form-ux-validation/</link>
      <pubDate>Tue, 15 Sep 2026 11:31:00 +0900</pubDate>
      <guid>https://www.codeslog.com/en/posts/form-ux-validation/</guid>
      <description>Forms that flash errors on focus, or stay silent until submit, fail users. Get validation timing, aria-invalid, and aria-describedby right for accessible forms.</description>
    </item>
    <item>
      <title>Focus Management in SPAs: Keeping Screen Readers on Track After Route Changes</title>
      <link>https://www.codeslog.com/en/posts/spa-focus-management/</link>
      <pubDate>Tue, 15 Sep 2026 11:26:00 +0900</pubDate>
      <guid>https://www.codeslog.com/en/posts/spa-focus-management/</guid>
      <description>Why screen readers stay silent after SPA route changes, and how to fix it in React and Next.js with focus management, aria-live, and focus restoration patterns.</description>
    </item>
    <item>
      <title>The Color Is Right but the Contrast Is Wrong: The Accessibility Trap CSS opacity Sets</title>
      <link>https://www.codeslog.com/en/posts/opacity-contrast-trap/</link>
      <pubDate>Tue, 21 Jul 2026 00:30:00 +0900</pubDate>
      <guid>https://www.codeslog.com/en/posts/opacity-contrast-trap/</guid>
      <description>You put a dark gray in your CSS, yet the accessibility checker flags it for low contrast. The culprit is opacity. Here&amp;#39;s how opacity mixes your text color into the background and quietly kills contrast — with a real case, the math, and the fix.</description>
    </item>
    <item>
      <title>Supporting High Contrast Mode Properly: forced-colors and System Colors</title>
      <link>https://www.codeslog.com/en/posts/high-contrast-mode/</link>
      <pubDate>Sat, 18 Jul 2026 22:47:00 +0900</pubDate>
      <guid>https://www.codeslog.com/en/posts/high-contrast-mode/</guid>
      <description>Dark mode is about choosing colors; high contrast mode is about responding to the colors the OS forces. How to support low-vision users with the forced-colors media query, system color keywords, and prefers-contrast — with practical code.</description>
    </item>
    <item>
      <title>Dark Mode Done Right: CSS Variable Design to Contrast Verification</title>
      <link>https://www.codeslog.com/en/posts/dark-mode-implementation/</link>
      <pubDate>Sat, 18 Jul 2026 02:44:00 +0900</pubDate>
      <guid>https://www.codeslog.com/en/posts/dark-mode-implementation/</guid>
      <description>Design dark mode with CSS custom properties, implement prefers-color-scheme with JS toggle, and verify color contrast in both modes. A practical guide to dark mode that works for everyone.</description>
    </item>
  </channel>
</rss>
