Accessible icon links

In modern web design, it is not uncommon to have a link (or a button) that visually has no text, and is just an icon. Think about social icons, or items in a compact navbar. Relying solely on iconography can be tricky, but it can work, especially when icons are clear and well known.

Yet, even if no text is technically displayed, it is important to provide alternative content for people using screen-readers. It turns out making an accessible icon link is not that straightforward and I thought it would deserve its own little article.

Implementation

As an example, let’s consider a Twitter icon link using the iconic bird. We will use SVG for the icon itself since it’s a scalar format that does not require an additional HTTP request.

svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 16 16">
path
d="M16 3.538a6.461 6.461 0 0 1-1.884.516 3.301 3.301 0 0 0 1.444-1.816 6.607 6.607 0 0 1-2.084.797 3.28 3.28 0 0 0-2.397-1.034 3.28 3.28 0 0 0-3.197 4.028 9.321 9.321 0 0 1-6.766-3.431 3.284 3.284 0 0 0 1.015 4.381A3.301 3.301 0 0 1 .643 6.57v.041A3.283 3.283 0 0 0 3.277 9.83a3.291 3.291 0 0 1-1.485.057 3.293 3.293 0 0 0 3.066 2.281 6.586 6.586 0 0 1-4.862 1.359 9.286 9.286 0 0 0 5.034 1.475c6.037 0 9.341-5.003 9.341-9.341 0-.144-.003-.284-.009-.425a6.59 6.59 0 0 0 1.637-1.697z"
/>

svg>

Now, let’s start by wrapping it up with a link:


a href="https://twitter.com/HugoGiraudel">
svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 16 16">svg>
a>

Unfortunately, at this stage this link contains no accessible name, which is a big problem. Let’s add some descriptive text, that we make visually hidden yet accessible.


a href="https://twitter.com/HugoGiraudel">
svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 16 16">svg>
span class="sr-only">Twitterspan>
a>

Chris Heilmann asked me whether using the aria-label attribute or a element in the SVG would be simpler than having a visually hidden element. The latter solution provides better support with older assistive technologies and avoids aria-label internationalisation issues.

There is still a bit more we need to do. Since we provided a descriptive text, we can safely remove the SVG markup from the accessibility tree by adding the aria-hidden attribute.


a href="https://twitter.com/HugoGiraudel">
svg
aria-hidden="true"
xmlns="http://www.w3.org/2000/svg"
viewbox="0 0 16 16"
>


svg>
span class="sr-only">Twitterspan>
a>

Last but not least, svg elements can be focused on Internet Explorer, which is becoming less and less of a problem overall—still, we should correct that with the focusable attribute.

a href="https://twitter.com/HugoGiraudel">
svg
aria-hidden="true"
focusable="false"
xmlns="http://www.w3.org/2000/svg"
viewbox="0 0 16 16"
>


svg>
span class="sr-only">Twitterspan>
a>

As a last touch, I would recommend adding the text content in the title attribute on the link as well. This does not enhance accessibility per se, but it emits a small tooltip when hovering the link, which can be handy for non-obvious iconography.

a href="https://twitter.com/HugoGiraudel" title="Twitter">
svg
aria-hidden="true"
focusable="false"
xmlns="http://www.w3.org/2000/svg"
viewbox="0 0 16 16"
>


svg>
span class="sr-only">Twitterspan>
a>

Our final link (with some additional styles to make it easier on the eye):
Twitter

As a React component

Now that we have sorted out how to make our icon links accessible, we can safely make a little React component for that (out of sight, out of mind), using a component.

const IconLink = ({ Icon, ...props }) => (
a {...props}>
Icon aria-hidden="true" focusable="false" />
VisuallyHidden>{props.title}/VisuallyHidden>
/a>
)

Then it can be used like this:

const Twitter = props => (
svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' {...props}>
path d='M16 3.538a6.461 6.461 0 0 1-1.884.516 3.301 3.301 0 0 0 1.444-1.816 6.607 6.607 0 0 1-2.084.797 3.28 3.28 0 0 0-2.397-1.034 3.28 3.28 0 0 0-3.197 4.028 9.321 9.321 0 0 1-6.766-3.431 3.284 3.284 0 0 0 1.015 4.381A3.301 3.301 0 0 1 .643 6.57v.041A3.283 3.283 0 0 0 3.277 9.83a3.291 3.291 0 0 1-1.485.057 3.293 3.293 0 0 0 3.066 2.281 6.586 6.586 0 0 1-4.862 1.359 9.286 9.286 0 0 0 5.034 1.475c6.037 0 9.341-5.003 9.341-9.341 0-.144-.003-.284-.009-.425a6.59 6.59 0 0 0 1.637-1.697z' />
/svg>
)

const MyComponent = props => (
IconLink
href='https://twitter.com/HugoGiraudel'
title='Twitter'
Icon={Twitter}
/>
)

Further reading

Opening a link in a new tab also comes with accessibility considerations that should not be overlooked. I went over opening links in a new tab in another article. Although it was showcasing a React implementation, the knowledge should be easy to transfer.

Sara Soueidan went through accessible icon buttons on her blog, and shares interesting tips to debug the accessibility name in the browser developer tools.

Additionally, Florens Verschelde has great content about working with SVG icons, including composing, spriting, styling and rendering icons. Cannot recommended you enough to read it!


This content originally appeared on Hugo “Kitty” Giraudel and was authored by Hugo “Kitty” Giraudel

In modern web design, it is not uncommon to have a link (or a button) that visually has no text, and is just an icon. Think about social icons, or items in a compact navbar. Relying solely on iconography can be tricky, but it can work, especially when icons are clear and well known.

Yet, even if no text is technically displayed, it is important to provide alternative content for people using screen-readers. It turns out making an accessible icon link is not that straightforward and I thought it would deserve its own little article.

Implementation

As an example, let’s consider a Twitter icon link using the iconic bird. We will use SVG for the icon itself since it’s a scalar format that does not require an additional HTTP request.

<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 16 16">
<path
d="M16 3.538a6.461 6.461 0 0 1-1.884.516 3.301 3.301 0 0 0 1.444-1.816 6.607 6.607 0 0 1-2.084.797 3.28 3.28 0 0 0-2.397-1.034 3.28 3.28 0 0 0-3.197 4.028 9.321 9.321 0 0 1-6.766-3.431 3.284 3.284 0 0 0 1.015 4.381A3.301 3.301 0 0 1 .643 6.57v.041A3.283 3.283 0 0 0 3.277 9.83a3.291 3.291 0 0 1-1.485.057 3.293 3.293 0 0 0 3.066 2.281 6.586 6.586 0 0 1-4.862 1.359 9.286 9.286 0 0 0 5.034 1.475c6.037 0 9.341-5.003 9.341-9.341 0-.144-.003-.284-.009-.425a6.59 6.59 0 0 0 1.637-1.697z"
/>

svg>

Now, let’s start by wrapping it up with a link:


<a href="https://twitter.com/HugoGiraudel">
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 16 16">svg>
a>

Unfortunately, at this stage this link contains no accessible name, which is a big problem. Let’s add some descriptive text, that we make visually hidden yet accessible.


<a href="https://twitter.com/HugoGiraudel">
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 16 16">svg>
<span class="sr-only">Twitterspan>
a>

Chris Heilmann asked me whether using the aria-label attribute or a </code> element in the SVG would be simpler than having a visually hidden element. The latter solution provides <a href="https://twitter.com/goetsu/status/1334596736833232896?s=20">better support with older assistive technologies</a> and avoids <a href="https://heydonworks.com/article/aria-label-is-a-xenophobe/"><code>aria-label</code> internationalisation issues</a>.</p> </div> <p>There is still a bit more we need to do. Since we provided a descriptive text, we can safely remove the SVG markup from the accessibility tree by adding the <code>aria-hidden</code> attribute.</p> <pre class="language-html"><code class="language-html"><span class="token comment"><!-- Incomplete: please do *not* copy and paste this snippet --></span><br><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://twitter.com/HugoGiraudel<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><br> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>svg</span><br> <span class="token attr-name">aria-hidden</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>true<span class="token punctuation">"</span></span><br> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2000/svg<span class="token punctuation">"</span></span><br> <span class="token attr-name">viewbox</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>0 0 16 16<span class="token punctuation">"</span></span><br> <span class="token punctuation">></span></span><br> …<br> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>svg</span><span class="token punctuation">></span></span><br> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>sr-only<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Twitter<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span><br><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span></code></pre> <p>Last but not least, <code>svg</code> elements can be focused on Internet Explorer, which is becoming less and less of a problem overall—still, we should correct that with the <code>focusable</code> attribute.</p> <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://twitter.com/HugoGiraudel<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><br> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>svg</span><br> <span class="token attr-name">aria-hidden</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>true<span class="token punctuation">"</span></span><br> <span class="token attr-name">focusable</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>false<span class="token punctuation">"</span></span><br> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2000/svg<span class="token punctuation">"</span></span><br> <span class="token attr-name">viewbox</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>0 0 16 16<span class="token punctuation">"</span></span><br> <span class="token punctuation">></span></span><br> …<br> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>svg</span><span class="token punctuation">></span></span><br> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>sr-only<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Twitter<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span><br><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span></code></pre> <p>As a last touch, I would recommend adding the text content in the <code>title</code> attribute on the link as well. This does not enhance accessibility per se, but it emits a small tooltip when hovering the link, which can be handy for non-obvious iconography.</p> <pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://twitter.com/HugoGiraudel<span class="token punctuation">"</span></span> <span class="token attr-name">title</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Twitter<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><br> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>svg</span><br> <span class="token attr-name">aria-hidden</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>true<span class="token punctuation">"</span></span><br> <span class="token attr-name">focusable</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>false<span class="token punctuation">"</span></span><br> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2000/svg<span class="token punctuation">"</span></span><br> <span class="token attr-name">viewbox</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>0 0 16 16<span class="token punctuation">"</span></span><br> <span class="token punctuation">></span></span><br> …<br> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>svg</span><span class="token punctuation">></span></span><br> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>sr-only<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Twitter<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span><br><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span></code></pre> <p>Our final link (with some additional styles to make it easier on the eye): <a href="https://twitter.com/HugoGiraudel" title="Twitter" class="demo-link"> <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 16 16" > <path d='M16 3.538a6.461 6.461 0 0 1-1.884.516 3.301 3.301 0 0 0 1.444-1.816 6.607 6.607 0 0 1-2.084.797 3.28 3.28 0 0 0-2.397-1.034 3.28 3.28 0 0 0-3.197 4.028 9.321 9.321 0 0 1-6.766-3.431 3.284 3.284 0 0 0 1.015 4.381A3.301 3.301 0 0 1 .643 6.57v.041A3.283 3.283 0 0 0 3.277 9.83a3.291 3.291 0 0 1-1.485.057 3.293 3.293 0 0 0 3.066 2.281 6.586 6.586 0 0 1-4.862 1.359 9.286 9.286 0 0 0 5.034 1.475c6.037 0 9.341-5.003 9.341-9.341 0-.144-.003-.284-.009-.425a6.59 6.59 0 0 0 1.637-1.697z' /> </svg> <span class="visually-hidden">Twitter</span> </a></p> <h2 id="as-a-react-component">As a React component</h2> <p>Now that we have sorted out how to make our icon links accessible, we can safely make a little React component for that (out of sight, out of mind), using a <a href="https://hugogiraudel.com/snippets/visually-hidden-component/"><code><VisuallyHidden /></code> component</a>.</p> <pre class="language-js"><code class="language-js"><span class="token keyword">const</span> <span class="token function-variable function">IconLink</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter"><span class="token punctuation">{</span> Icon<span class="token punctuation">,</span> <span class="token operator">...</span>props <span class="token punctuation">}</span></span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">(</span><br> <span class="token operator"><</span>a <span class="token punctuation">{</span><span class="token operator">...</span>props<span class="token punctuation">}</span><span class="token operator">></span><br> <span class="token operator"><</span>Icon aria<span class="token operator">-</span>hidden<span class="token operator">=</span><span class="token string">"true"</span> focusable<span class="token operator">=</span><span class="token string">"false"</span> <span class="token operator">/</span><span class="token operator">></span><br> <span class="token operator"><</span>VisuallyHidden<span class="token operator">></span><span class="token punctuation">{</span>props<span class="token punctuation">.</span>title<span class="token punctuation">}</span><span class="token operator"><</span><span class="token operator">/</span>VisuallyHidden<span class="token operator">></span><br> <span class="token operator"><</span><span class="token operator">/</span>a<span class="token operator">></span><br><span class="token punctuation">)</span></code></pre> <p>Then it can be used like this:</p> <pre class="language-js"><code class="language-js"><span class="token keyword">const</span> <span class="token function-variable function">Twitter</span> <span class="token operator">=</span> <span class="token parameter">props</span> <span class="token operator">=></span> <span class="token punctuation">(</span><br> <span class="token operator"><</span>svg xmlns<span class="token operator">=</span><span class="token string">'http://www.w3.org/2000/svg'</span> viewBox<span class="token operator">=</span><span class="token string">'0 0 16 16'</span> <span class="token punctuation">{</span><span class="token operator">...</span>props<span class="token punctuation">}</span><span class="token operator">></span><br> <span class="token operator"><</span>path d<span class="token operator">=</span><span class="token string">'M16 3.538a6.461 6.461 0 0 1-1.884.516 3.301 3.301 0 0 0 1.444-1.816 6.607 6.607 0 0 1-2.084.797 3.28 3.28 0 0 0-2.397-1.034 3.28 3.28 0 0 0-3.197 4.028 9.321 9.321 0 0 1-6.766-3.431 3.284 3.284 0 0 0 1.015 4.381A3.301 3.301 0 0 1 .643 6.57v.041A3.283 3.283 0 0 0 3.277 9.83a3.291 3.291 0 0 1-1.485.057 3.293 3.293 0 0 0 3.066 2.281 6.586 6.586 0 0 1-4.862 1.359 9.286 9.286 0 0 0 5.034 1.475c6.037 0 9.341-5.003 9.341-9.341 0-.144-.003-.284-.009-.425a6.59 6.59 0 0 0 1.637-1.697z'</span> <span class="token operator">/</span><span class="token operator">></span><br> <span class="token operator"><</span><span class="token operator">/</span>svg<span class="token operator">></span><br><span class="token punctuation">)</span><br><br><span class="token keyword">const</span> <span class="token function-variable function">MyComponent</span> <span class="token operator">=</span> <span class="token parameter">props</span> <span class="token operator">=></span> <span class="token punctuation">(</span><br> <span class="token operator"><</span>IconLink<br> href<span class="token operator">=</span><span class="token string">'https://twitter.com/HugoGiraudel'</span><br> title<span class="token operator">=</span><span class="token string">'Twitter'</span><br> Icon<span class="token operator">=</span><span class="token punctuation">{</span>Twitter<span class="token punctuation">}</span><br> <span class="token operator">/</span><span class="token operator">></span><br><span class="token punctuation">)</span></code></pre> <h2 id="further-reading">Further reading</h2> <p>Opening a link in a new tab also comes with accessibility considerations that should not be overlooked. I went over <a href="https://hugogiraudel.com/2020/01/17/accessible-links-and-buttons-with-react/#%23open-a-tab-for-me-will-you">opening links in a new tab</a> in another article. Although it was showcasing a React implementation, the knowledge should be easy to transfer.</p> <p>Sara Soueidan went through <a href="https://www.sarasoueidan.com/blog/accessible-icon-buttons/">accessible icon buttons</a> on her blog, and shares interesting tips to debug the accessibility name in the browser developer tools.</p> <p>Additionally, Florens Verschelde has great content about <a href="https://fvsch.com/svg-icons">working with SVG icons</a>, including composing, spriting, styling and rendering icons. Cannot recommended you enough to read it!</p> <p class="syndicated-attribution"><br>This content originally appeared on <a href="https://hugogiraudel.com/2020/12/10/accessible-icon-links/" target="_blank">Hugo “Kitty” Giraudel</a> and was authored by Hugo “Kitty” Giraudel<br></p> <br> <style> .ap-print-btn-comment { display:none; } .single .ap-print-btn-comment { display:block; } #respond { visibility:hidden; } .entry-content .ap-print-btn { display:none!important; } .entry-content .singleshow .ap-print-btn { display:block!important; } /* #respond { display:none; } */ </style> <script> function showhidecommentbox() { var x = document.getElementById("respond"); if (x.style.visibility === "visible") { x.style.visibility = "hidden"; } else { x.style.visibility = "visible"; } /* if (x.style.display === "block") { x.style.display = "none"; } else { x.style.display = "block"; } */ } </script> <div class="singleshow"> <a href="?printer_app=1" class="ap-print-btn" style=" padding: 15px; margin-top: 10px; width: 140px; text-align: center; border-radius: 3px; font-size: 14px; box-shadow: none !important; background-color: ; color: #ffffff;float:left; margin-right:10px;text-decoration: none;">Print</a> <a onclick="pop()" class="ap-print-btn ap-print-btn-comment" style="cursor:pointer; padding: 15px; margin-top: 10px; width: 140px; text-align: center; border-radius: 3px; font-size: 14px; box-shadow: none !important; background-color: ; color: #ffffff;float:left; margin-right:10px;text-decoration: none;">Share</a> <a onclick="popcomment()" class="ap-print-btn ap-print-btn-comment" style="cursor:pointer; padding: 15px; margin-top: 10px; width: 140px; text-align: center; border-radius: 3px; font-size: 14px; box-shadow: none !important; background-color: ; color: #ffffff;float:left; margin-right:10px;text-decoration: none;">Comment</a> <a onclick="popcite()" class="ap-print-btn ap-print-btn-comment" style="cursor:pointer; padding: 15px; margin-top: 10px; width: 140px; text-align: center; border-radius: 3px; font-size: 14px; box-shadow: none !important; background-color: ; color: #ffffff;float:left; margin-right:10px;text-decoration: none;">Cite</a> <a onclick="popupload()" class="ap-print-btn ap-print-btn-comment" style="cursor:pointer; padding: 15px; margin-top: 10px; width: 140px; text-align: center; border-radius: 3px; font-size: 14px; box-shadow: none !important; background-color: ; color: #ffffff;float:left; margin-right:10px;text-decoration: none;">Upload</a> <a onclick="poptranslate()" class="ap-print-btn ap-print-btn-comment" style="cursor:pointer; padding: 15px; margin-top: 10px; width: 140px; text-align: center; border-radius: 3px; font-size: 14px; box-shadow: none !important; background-color: ; color: #ffffff;float:left; margin-right:10px;text-decoration: none;">Translate</a> <script> function pop() { var popup = document.getElementById('sharepopup'); popup.classList.toggle('show'); } function popcite() { var popup = document.getElementById('citationarea'); popup.classList.toggle('show'); } function popupload() { var popup = document.getElementById('uploadarea'); popup.classList.toggle('show'); } function poptranslate() { var popup = document.getElementById('translatearea'); popup.classList.toggle('show'); } function popcomment() { var popup = document.getElementById('commentarea'); popup.classList.toggle('show'); var x = document.getElementById("respond"); if (x.style.visibility === "visible") { x.style.visibility = "hidden"; } else { x.style.visibility = "visible"; } } </script> <style> .show{ display: grid !important; grid-template-columns: 70px auto; width: 100%; height: 100%; } #respond { margin-left: -40px; } .popup { display: inline-block; } .popup .popuptext { visibility: hidden; background-color: #000000; color: #fff; border-radius: 3px; padding:10px; position:relative; margin:10px 0; } .popuptext { background-color: #000000; color: #fff; border-radius: 3px; padding:10px; position:relative; margin:10px 0; } .popup { width: 100%; } .popup .show { visibility: visible; } #commentarea{ display: none; } #citationarea { display: none; } #commentarea .show{ display: inline !important; visibility: visible !important; background-color: #ffdb14; } #citationarea { display: none; } #citationarea .show { display: inline !important; visibility: visible !important; background-color: #ffdb14; } #uploadarea { display: none; } #uploadarea .show { display: inline !important; visibility: visible !important; background-color: #ffdb14; } #translatearea { display: none; } #translatearea .show { display: inline !important; visibility: visible !important; background-color: #ffdb14; } .sharedashicons { color: white; text-decoration: none; padding: 5px 0; } #translatearea textarea { max-width: 580px; min-width: 100% !important; } </style> <div class="popup"> <span class="popuptext" id="sharepopup"> <div class="sharelogo" id="emailsharelogo"><a href="mailto:info@example.com?&subject=Accessible icon links&body=https://www.scien.cx/2020/12/10/accessible-icon-links/"><span class="sharedashicons dashicons dashicons-email"></span></a></div> <div class="sharelogo" id="facebooksharelogo"><a href="https://www.facebook.com/sharer/sharer.php?u=https://www.scien.cx/2020/12/10/accessible-icon-links/"><span class="sharedashicons dashicons dashicons-facebook"></span></a></div> <div class="sharelogo" id="twittersharelogo"><a href="https://twitter.com/intent/tweet?url=https://www.scien.cx/2020/12/10/accessible-icon-links/&text=Accessible icon links"><span class="sharedashicons dashicons dashicons-twitter"></span></a></div> <div class="sharelogo" id="urlsharelogo"><a href="https://twitter.com/intent/tweet?url=https://www.scien.cx/2020/12/10/accessible-icon-links/&text=Accessible icon links"><span class="sharedashicons dashicons dashicons-admin-links" onclick="myFunction();"></span></a></div> </span> </div> <div class="commentpopup" style"width: 100%;"> <span class="" id="commentarea"> <img src="https://www.radiofree.org/wp-content/plugins/print-app/icon.jpg" width="100%"> <div class="comments-wrapper"> </div><!-- .comments-wrapper --> </span> </div> <div class="citationpopup" style"width: 100%;"> <span class="popuptext" id="citationarea"> <span class=“citestyle”>APA</span><div class="citationblock" id="content-1">Hugo “Kitty” Giraudel | Sciencx (2023-12-06T05:24:39+00:00) <i> » Accessible icon links</i>. Retrieved from https://www.scien.cx/2020/12/10/accessible-icon-links/.</div> <span class=“citestyle”>MLA</span><div class="citationblock" id="content-2">" » Accessible icon links." Hugo “Kitty” Giraudel | Sciencx - Thursday December 10, 2020, https://www.scien.cx/2020/12/10/accessible-icon-links/</div> <span class=“citestyle”>HARVARD</span><div class="citationblock" id="content-3">Hugo “Kitty” Giraudel | Sciencx Thursday December 10, 2020 » Accessible icon links., viewed 2023-12-06T05:24:39+00:00,<https://www.scien.cx/2020/12/10/accessible-icon-links/></div> <span class=“citestyle”>VANCOUVER</span><div class="citationblock" id="content-4">Hugo “Kitty” Giraudel | Sciencx - » Accessible icon links. [Internet]. [Accessed 2023-12-06T05:24:39+00:00]. Available from: https://www.scien.cx/2020/12/10/accessible-icon-links/</div> <span class=“citestyle”>CHICAGO</span><div class="citationblock" id="content-5">" » Accessible icon links." Hugo “Kitty” Giraudel | Sciencx - Accessed 2023-12-06T05:24:39+00:00. https://www.scien.cx/2020/12/10/accessible-icon-links/</div> <span class=“citestyle”>IEEE</span><div class="citationblock" id="content-6">" » Accessible icon links." Hugo “Kitty” Giraudel | Sciencx [Online]. Available: https://www.scien.cx/2020/12/10/accessible-icon-links/. [Accessed: 2023-12-06T05:24:39+00:00]</div> <span class=“citestyle”>rf:citation</span><div class="citationblock" id="content-7"> » Accessible icon links | Hugo “Kitty” Giraudel | Sciencx | https://www.scien.cx/2020/12/10/accessible-icon-links/ | 2023-12-06T05:24:39+00:00</div> </span> </div> </span> </div> <div class="citationpopup" style"width: 100%;"> <span class="popuptext" id="uploadarea"> https://github.com/addpipe/simple-recorderjs-demo </span> </div> <div class="translatepopup" style"width: 100%;"> <span class="popuptext" id="translatearea"> <container id="translationcontainer" class="translationcontainer"> <form id="new_post" name="new_post" method="post" enctype="multipart/form-data"> <input type="text" id="title" value="" placeholder="TRANSLATE TITLE: Accessible icon links" tabindex="1" size="20" name="title" /> <div id="wp-content-wrap" class="wp-core-ui wp-editor-wrap html-active"><link rel='stylesheet' id='editor-buttons-css' href='https://www.scien.cx/wp-includes/css/editor.min.css?ver=6.4.1' type='text/css' media='all' /> <div id="wp-content-editor-container" class="wp-editor-container"><div id="qt_content_toolbar" class="quicktags-toolbar hide-if-no-js"></div><textarea class="wp-editor-area" rows="20" cols="40" name="content" id="content">Use this space to make a translated version of this post.</textarea></div> </div> <input type="text" value="" tabindex="5" size="16" name="post_tags" placeholder="TRANSLATE TAGS: " id="post_tags" /></p> <input type="file" name="post_image" id="post_image" aria-required="true"> <select data-placeholder="Choose a Language..."> <option value="AF">Afrikaans</option> <option value="SQ">Albanian</option> <option value="AR">Arabic</option> <option value="HY">Armenian</option> <option value="EU">Basque</option> <option value="BN">Bengali</option> <option value="BG">Bulgarian</option> <option value="CA">Catalan</option> <option value="KM">Cambodian</option> <option value="ZH">Chinese (Mandarin)</option> <option value="HR">Croatian</option> <option value="CS">Czech</option> <option value="DA">Danish</option> <option value="NL">Dutch</option> <option value="EN">English</option> <option value="ET">Estonian</option> <option value="FJ">Fiji</option> <option value="FI">Finnish</option> <option value="FR">French</option> <option value="KA">Georgian</option> <option value="DE">German</option> <option value="EL">Greek</option> <option value="GU">Gujarati</option> <option value="HE">Hebrew</option> <option value="HI">Hindi</option> <option value="HU">Hungarian</option> <option value="IS">Icelandic</option> <option value="ID">Indonesian</option> <option value="GA">Irish</option> <option value="IT">Italian</option> <option value="JA">Japanese</option> <option value="JW">Javanese</option> <option value="KO">Korean</option> <option value="LA">Latin</option> <option value="LV">Latvian</option> <option value="LT">Lithuanian</option> <option value="MK">Macedonian</option> <option value="MS">Malay</option> <option value="ML">Malayalam</option> <option value="MT">Maltese</option> <option value="MI">Maori</option> <option value="MR">Marathi</option> <option value="MN">Mongolian</option> <option value="NE">Nepali</option> <option value="NO">Norwegian</option> <option value="FA">Persian</option> <option value="PL">Polish</option> <option value="PT">Portuguese</option> <option value="PA">Punjabi</option> <option value="QU">Quechua</option> <option value="RO">Romanian</option> <option value="RU">Russian</option> <option value="SM">Samoan</option> <option value="SR">Serbian</option> <option value="SK">Slovak</option> <option value="SL">Slovenian</option> <option value="ES">Spanish</option> <option value="SW">Swahili</option> <option value="SV">Swedish </option> <option value="TA">Tamil</option> <option value="TT">Tatar</option> <option value="TE">Telugu</option> <option value="TH">Thai</option> <option value="BO">Tibetan</option> <option value="TO">Tonga</option> <option value="TR">Turkish</option> <option value="UK">Ukrainian</option> <option value="UR">Urdu</option> <option value="UZ">Uzbek</option> <option value="VI">Vietnamese</option> <option value="CY">Welsh</option> <option value="XH">Xhosa</option> </select> <input type="text" id="lname" name="lname" placeholder="Author"><br><br> <p><input type="submit" value="Publish" tabindex="6" id="submit" name="submit" /></p> </form> </container> </span> </div> </div><!-- .entry-content --> <nav class="pagination-single border-color-border"> <a class="previous-post" href="https://www.scien.cx/2020/12/09/parser-hacking-08-skipping-newlines-in-the-lexer-simplified-parsing/"> <span class="arrow">←</span> <span class="title"><span class="title-inner">Parser Hacking [08]: Skipping Newlines in the Lexer | Simplified Parsing</span></span> </a> <a class="next-post" href="https://www.scien.cx/2020/12/10/political-gabfest-15th-anniversary-show/"> <span class="arrow">→</span> <span class="title"><span class="title-inner">Political Gabfest 15th Anniversary Show</span></span> </a> </nav><!-- .single-pagination --> </div><!-- .post-inner --> </article><!-- .post --> <div class="related-posts section-inner"> <h2 class="related-posts-title heading-size-3">Related Posts</h2> <div class="posts"> <div class="posts-grid related-posts-grid grid mcols-1 tcols-2 tlcols-3 dcols-4"> <div class="grid-item"> <article class="preview preview-post post-332020 post type-post status-publish format-standard hentry category-link category-web-components" id="post-332020">