<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Faith</title>
    <description>The latest articles on DEV Community by Faith (@fairyfaiyth).</description>
    <link>https://dev.to/fairyfaiyth</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4152807%2Fe5d4b04d-b8d7-40e8-9428-b4fecd823076.png</url>
      <title>DEV Community: Faith</title>
      <link>https://dev.to/fairyfaiyth</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fairyfaiyth"/>
    <language>en</language>
    <item>
      <title>Semantic HTML and Accessibility: What I Learned</title>
      <dc:creator>Faith</dc:creator>
      <pubDate>Sat, 31 Oct 2026 11:06:55 +0000</pubDate>
      <link>https://dev.to/fairyfaiyth/semantic-html-and-accessibility-what-i-learned-4joi</link>
      <guid>https://dev.to/fairyfaiyth/semantic-html-and-accessibility-what-i-learned-4joi</guid>
      <description>&lt;p&gt;When I started building my portfolio, I made every part of the page with &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; tags. A &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; is just a box, and it doesn't tell the browser what is inside it.&lt;/p&gt;

&lt;p&gt;Semantic HTML means using tags that describe what the content is, like &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;footer&amp;gt;&lt;/code&gt;. People who are blind use screen readers, and these tags tell the reader what each part of the page is, so they can jump straight to the menu or the main content. Search engines also understand the page better, and the code is easier to read.&lt;/p&gt;

&lt;p&gt;Alt text is another important part. It is a short description inside an image tag. Without it, a screen reader has nothing meaningful to read, so a blind person misses what the image shows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before and after
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"header"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"nav"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"main"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"article"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;header&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;nav&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/header&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;article&amp;gt;&lt;/span&gt;...&lt;span class="nt"&gt;&amp;lt;/article&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The page looks the same, but now every part has a meaning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three problems I fixed
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Missing menu.&lt;/strong&gt; My contact page had no navigation, so a person using a keyboard or screen reader couldn't reach the other pages. I added a &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt; to every page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A broken email link.&lt;/strong&gt; My "Get in touch" link pointed to a fake address, &lt;code&gt;your-email@example.com&lt;/code&gt;. I changed it to my real email so the link works.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A hidden focus outline.&lt;/strong&gt; My form CSS removed the outline that shows which field is selected. People who use a keyboard need it, so I deleted that line.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  See it live
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://fairyfaiyth.github.io/iyf-s12-week-02-fairyfaiyth/" rel="noopener noreferrer"&gt;https://fairyfaiyth.github.io/iyf-s12-week-02-fairyfaiyth/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;I learned that tags like &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; tell screen readers what each part of a page is. I also learned that small fixes, like a working email link and a visible focus outline, make a website easier for everyone to use.&lt;/p&gt;

&lt;p&gt;Before this week I did not think much about how a page sounds to someone who cannot see it. Now I check that every page has a menu, working links and a clear structure.&lt;/p&gt;

</description>
      <category>html</category>
      <category>webdev</category>
      <category>a11y</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Why Semantics Matter: My Journey Into Web Accessibility</title>
      <dc:creator>Faith</dc:creator>
      <pubDate>Wed, 30 Sep 2026 18:26:41 +0000</pubDate>
      <link>https://dev.to/fairyfaiyth/why-semantics-matter-my-journey-into-web-accessibility-4p81</link>
      <guid>https://dev.to/fairyfaiyth/why-semantics-matter-my-journey-into-web-accessibility-4p81</guid>
      <description>&lt;p&gt;When building for the web, it is easy to fall into the habit of structuring everything with div tags. However, my first week at IYF taught me that how we write HTML fundamentally impacts how people experience our websites. &lt;/p&gt;

&lt;p&gt;Here is what I learned about semantic HTML and web accessibility during my latest portfolio audit.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Semantic HTML and Why Does It Matter?
&lt;/h3&gt;

&lt;p&gt;Semantic HTML means using tags that clearly describe their meaning to both the browser and the developer. Instead of using generic layout blocks, semantic tags like header, nav, main, article, and footer clearly define the structure of a document.&lt;/p&gt;

&lt;p&gt;This matters because accessibility is a foundational requirement, not an optional feature. Screen readers and other assistive technologies rely entirely on these tags to navigate a webpage. Without semantic milestones, a user relying on a screen reader is forced to listen to a chaotic wall of text with no clear structural guideposts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Before and After: The Semantic Shift
&lt;/h3&gt;

&lt;p&gt;To see the difference, look at how a simple layout can be transformed from a messy container layout to clear, meaningful semantic elements:&lt;/p&gt;

&lt;h4&gt;
  
  
  Non-Semantic (Bad Practice)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- BAD: Non-semantic version --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"header"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"logo"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;My Site&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"nav"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"nav-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Home&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"nav-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;About&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"nav-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Contact&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Semantic (Good Practice)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- GOOD: Clean Semantic version --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;header&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;My Site&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;nav&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"index.html"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Home&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"about.html"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;About&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"contact.html"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Contact&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/header&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Auditing My Portfolio: 3 Key Fixes
&lt;/h3&gt;

&lt;p&gt;Using Chrome DevTools Lighthouse and the WAVE Web Accessibility Tool, I ran an audit on my newly created portfolio site. I uncovered a few critical issues and immediately fixed them:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Missing Image Alt Text:&lt;/strong&gt; A few placeholder images lacked alt descriptive attributes. I resolved this by adding descriptive alt="Profile picture of developer" text so screen reader users know exactly what the image depicts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Broken Form Labels:&lt;/strong&gt; My input fields in contact.html weren't properly wrapped or explicitly connected to their labels. I linked them explicitly using matching id and for attributes inside the label tags.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skipped Heading Hierarchy:&lt;/strong&gt; My page structure skipped straight from an h1 to an h3. I re-aligned the text flow into a strict logical hierarchy (h1 -&amp;gt; h2 -&amp;gt; h3) to avoid confusing page outlines.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After implementing these fixes, my Lighthouse accessibility score reached a perfect score!&lt;/p&gt;

&lt;h3&gt;
  
  
  Check Out My Project
&lt;/h3&gt;

&lt;p&gt;You can see my fully optimized, semantic multi-page portfolio live in action here:&lt;br&gt;
&lt;a href="https://github.io" rel="noopener noreferrer"&gt;https://github.io&lt;/a&gt;&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>frontend</category>
      <category>html</category>
    </item>
  </channel>
</rss>
