<?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: Florence Gitau</title>
    <description>The latest articles on DEV Community by Florence Gitau (@florence_gitau_pj).</description>
    <link>https://dev.to/florence_gitau_pj</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%2F4153910%2Fe3a53451-2d59-4d50-9eae-1ae922cefc57.png</url>
      <title>DEV Community: Florence Gitau</title>
      <link>https://dev.to/florence_gitau_pj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/florence_gitau_pj"/>
    <language>en</language>
    <item>
      <title># Building an Accessible Web Portfolio: Semantic HTML and Accessibility Audit</title>
      <dc:creator>Florence Gitau</dc:creator>
      <pubDate>Thu, 01 Oct 2026 08:12:18 +0000</pubDate>
      <link>https://dev.to/florence_gitau_pj/-building-an-accessible-web-portfolio-semantic-html-and-accessibility-audit-38pe</link>
      <guid>https://dev.to/florence_gitau_pj/-building-an-accessible-web-portfolio-semantic-html-and-accessibility-audit-38pe</guid>
      <description>&lt;p&gt;When building my personal web portfolio, I realised that writing code that simply renders on screen isn't enough. Ensuring web applications are accessible to all users—including those relying on screen readers and keyboard navigation—is essential for modern web development.&lt;br&gt;
Here is what I learned while auditing my web portfolio for accessibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Semantic HTML and why does it matter?
&lt;/h2&gt;

&lt;p&gt;It means using HTML elements according to their intended structural meaning of an element rather than its visual appearance.&lt;br&gt;
Semantic tags matter because:&lt;br&gt;
-&lt;strong&gt;Accessibility:&lt;/strong&gt; Screen readers use semantic markup as landmarks, letting users navigate directly to primary sections.&lt;br&gt;
-&lt;strong&gt;Search Engine Optimisation:&lt;/strong&gt; Search engines understand page structure and hierarchy much better.&lt;br&gt;
-&lt;strong&gt;Code Maintainability:&lt;/strong&gt; It produces cleaner, more readable code for developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before vs. After Code Snippet
&lt;/h2&gt;

&lt;p&gt;Example from my project comparing non-semantic and semantic HTML:&lt;/p&gt;

&lt;h3&gt;
  
  
  Non-Semantic (Before):
&lt;/h3&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;"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;h3&gt;
  
  
  Semantic (After):
&lt;/h3&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;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;"#home"&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"&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"&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;h2&gt;
  
  
  Accessibility Issues Found &amp;amp; Fixed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Unlabeled inputs:
Issue: The document does not have a  landmark element.
Fix: Included the core body content inside a HTML tag.&lt;/li&gt;
&lt;li&gt;Sufficient size and spacing.
Issue: The document's touch targets didn't have sufficient size and spacing.
Fix: Added padding and margin CSS styles to anchor tags to increase tap target size and spacing.&lt;/li&gt;
&lt;/ul&gt;

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