A place to cache linked articles (think custom and personal wayback machine)
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

index.html 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="fr">
  4. <!-- Has to be within the first 1024 bytes, hence before the `title` element
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset="utf-8">
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name="viewport" content="width=device-width,initial-scale=1">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Accessibility notes from your headache-prone friend (archive) — David Larlet</title>
  13. <meta name="description" content="Publication mise en cache pour en conserver une trace.">
  14. <!-- That good ol' feed, subscribe :). -->
  15. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  16. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  17. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  18. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  19. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  20. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  21. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  22. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  23. <meta name="msapplication-TileColor" content="#f7f7f7">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
  26. <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
  27. <!-- Is that even respected? Retrospectively? What a shAItshow…
  28. https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/ -->
  29. <meta name="robots" content="noai, noimageai">
  30. <!-- Documented, feel free to shoot an email. -->
  31. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  32. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  35. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  36. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  37. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  38. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  39. <script>
  40. function toggleTheme(themeName) {
  41. document.documentElement.classList.toggle(
  42. 'forced-dark',
  43. themeName === 'dark'
  44. )
  45. document.documentElement.classList.toggle(
  46. 'forced-light',
  47. themeName === 'light'
  48. )
  49. }
  50. const selectedTheme = localStorage.getItem('theme')
  51. if (selectedTheme !== 'undefined') {
  52. toggleTheme(selectedTheme)
  53. }
  54. </script>
  55. <meta name="robots" content="noindex, nofollow">
  56. <meta content="origin-when-cross-origin" name="referrer">
  57. <!-- Canonical URL for SEO purposes -->
  58. <link rel="canonical" href="https://alexsirac.com/accessibility-notes/">
  59. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
  60. <article>
  61. <header>
  62. <h1>Accessibility notes from your headache-prone friend</h1>
  63. </header>
  64. <nav>
  65. <p class="center">
  66. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  67. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  68. </svg> Accueil</a> •
  69. <a href="https://alexsirac.com/accessibility-notes/" title="Lien vers le contenu original">Source originale</a>
  70. <br>
  71. Mis en cache le 2024-03-11
  72. </p>
  73. </nav>
  74. <hr>
  75. <p><em>This blog post was written as part of this month’s IndieWeb carnival, <a href="https://blog.basementcommunity.com/accessibility-in-the-personal-web/">hosted by orchids on the theme of Accessibility in the small web</a>. It was written during the Brighton IndieWebCamp: I’m attending remotely, but having the livestream on makes me feel like I’m sitting with all these productive and likeable people and gives me all the inspiration I need to write!</em></p>
  76. <p>I’m a boring person. Sorry! I use the Internet in light mode because dark mode gives me headaches, and I send most of the text that I read to my e-reader so I won’t have to stare at my screen (or sit at my desk), I read everything I can from my perfectly-customized RSS reader, and when I see a website with flashing lights or very bright colours, I admire it for a few seconds and then move it to reading mode so I can read bare text.</p>
  77. <p>The yesterweb is all about making pretty websites like the ones we had in simpler times. And as much as I love it in principle, I often have a pretty bad time reading it, which is unfortunate. So I end up favouring the incredibly bland and boring black-on-white (or, in my case, dark grey on light green, because I’m so special) websites over the ones that truly bring me joy.</p>
  78. <h2><span class="ez-toc-section" id="A_few_recommendations_for_small_web_friends"></span>A few recommendations for small web friends<span class="ez-toc-section-end"></span></h2>
  79. <p>(The web is small, not the friends.)</p>
  80. <p>In order of what should be easiest to implement:</p>
  81. <ul>
  82. <li>Make your links big: never link on a single word (especially not « here » or another short word), try to link groups of words or even full sentences. It’s easier for Team Big Thumbs, and more readable.
  83. <ul>
  84. <li>Side note: Don’t use « Click here » at all actually. When you link to something, tell us where we’ll end up − what’s the title of the page? What’s the general theme?</li>
  85. </ul>
  86. </li>
  87. <li>When you use hashtags, use camelCase, capitalizing the first letter of each word. It makes it much more readable than a letter salad.</li>
  88. <li>Make sure you have an RSS feed, which allows us to read from a platform that we’ve configured to meet our personal needs.</li>
  89. <li>Check contrast on your colours, to make sure they’re easily readable. I really like <a href="https://xandra.cc/">Xandra’s approach on her homepage</a>, as she has some low-contrast options that she thinks look nicer (maybe they do! i can’t read them!) but makes them more readable on hover and uses them reasonably. It’s a good compromise, in my opinion!</li>
  90. <li>Please, I beg you, make your website responsive. Listen, I know it’s not fun, and I too dislike mobile views, but when we zoom in on your text, it’s important that we can still read it.</li>
  91. <li>Remember alternative text on images. (Honestly, while I think this is really important, it has also driven me to post more text and fewer images, altogether, because it requires some effort.)</li>
  92. </ul>
  93. <h2><span class="ez-toc-section" id="What_next"></span>What next?<span class="ez-toc-section-end"></span></h2>
  94. <p>How do we make the small web fun and pretty, while keeping it nice to read for our headache-prone comrades?<br>
  95. I don’t know. But this is a start, and everything has to start somewhere, right?</p>
  96. <p>What I try to keep in mind is the <a href="https://en.wikipedia.org/wiki/Curb_cut_effect">curb cut effect</a>, also known as the « i want subtitles on my favourite show because even though my ears are just fine, i like to eat crisps while watching » rule. In many cases, adding accessibility to your website makes it nicer for everyone, not only for the people who needed these changes. (Corollary: everything that makes you squint is giving a giant migraine to someone else out there.)</p>
  97. <p>I don’t know much about accessibility and only write about what makes reading on a screen more tolerable for me. I’ll never <em>enjoy</em> reading text on a computer anyway, and there are many people with much more pressing and well-defined needs than me: I encourage you to educate yourself to accessibility, it’s an actually fun and interesting topic and brings real value to many, many people.</p>
  98. <h2><span class="ez-toc-section" id="Read_more"></span>Read more?<span class="ez-toc-section-end"></span></h2>
  99. <ul>
  100. <li><a href="https://www.marcozehe.de/">Marco&rsquo;s blog on accessibility</a> (currently inactive)</li>
  101. <li><a href="https://www.w3.org/WAI/fundamentals/accessibility-intro/">W3C&rsquo;s intro about accessibility</a></li>
  102. <li><a href="https://www.lemonde.fr/idees/article/2023/06/02/internet-l-accessibilite-numerique-est-encore-trop-souvent-vecue-comme-une-contrainte_6175856_3232.html">L&rsquo;accessiblité numérique est encore trop souvent vécue comme une contrainte</a>, tribune dans <em>Le Monde</em> (accès payant)</li>
  103. <li>Le <a href="https://fr.wikiversity.org/wiki/Mise_en_%C5%93uvre_de_l_accessibilite_numerique">cours d&rsquo;accessibilité du web sur la Wikiversity</a></li>
  104. </ul>
  105. <p>&lt;</p>
  106. </article>
  107. <hr>
  108. <footer>
  109. <p>
  110. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  111. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  112. </svg> Accueil</a> •
  113. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  114. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
  115. </svg> Suivre</a> •
  116. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  117. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
  118. </svg> Pro</a> •
  119. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  120. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
  121. </svg> Email</a> •
  122. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  123. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
  124. </svg> Légal</abbr>
  125. </p>
  126. <template id="theme-selector">
  127. <form>
  128. <fieldset>
  129. <legend><svg class="icon icon-brightness-contrast">
  130. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
  131. </svg> Thème</legend>
  132. <label>
  133. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  134. </label>
  135. <label>
  136. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  137. </label>
  138. <label>
  139. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  140. </label>
  141. </fieldset>
  142. </form>
  143. </template>
  144. </footer>
  145. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  146. <script>
  147. function loadThemeForm(templateName) {
  148. const themeSelectorTemplate = document.querySelector(templateName)
  149. const form = themeSelectorTemplate.content.firstElementChild
  150. themeSelectorTemplate.replaceWith(form)
  151. form.addEventListener('change', (e) => {
  152. const chosenColorScheme = e.target.value
  153. localStorage.setItem('theme', chosenColorScheme)
  154. toggleTheme(chosenColorScheme)
  155. })
  156. const selectedTheme = localStorage.getItem('theme')
  157. if (selectedTheme && selectedTheme !== 'undefined') {
  158. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  159. }
  160. }
  161. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  162. window.addEventListener('load', () => {
  163. let hasDarkRules = false
  164. for (const styleSheet of Array.from(document.styleSheets)) {
  165. let mediaRules = []
  166. for (const cssRule of styleSheet.cssRules) {
  167. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  168. continue
  169. }
  170. // WARNING: Safari does not have/supports `conditionText`.
  171. if (cssRule.conditionText) {
  172. if (cssRule.conditionText !== prefersColorSchemeDark) {
  173. continue
  174. }
  175. } else {
  176. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  177. continue
  178. }
  179. }
  180. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  181. }
  182. // WARNING: do not try to insert a Rule to a styleSheet you are
  183. // currently iterating on, otherwise the browser will be stuck
  184. // in a infinite loop…
  185. for (const mediaRule of mediaRules) {
  186. styleSheet.insertRule(mediaRule.cssText)
  187. hasDarkRules = true
  188. }
  189. }
  190. if (hasDarkRules) {
  191. loadThemeForm('#theme-selector')
  192. }
  193. })
  194. </script>
  195. </body>
  196. </html>