1
0
Fork 0
mirror of https://git.sr.ht/~seirdy/seirdy.one synced 2024-11-27 14:12:09 +00:00

A11y and perf improvements

- Even less halation for dark theme
- More contrast for borders
- Slightly larger font, fixes APCA contrast issue for <small>
- Make responsive navbar work in NetSurf
- Make aria-current page bold
- Use content-visibility to unload footers and endnotes
- Add aria-labels to unclear webring link text
- Replace <hr> elements with css borders; the semantic meaning of <hr>
  was unnecessary with section breaks.
This commit is contained in:
Rohan Kumar 2022-04-02 23:54:39 -07:00
parent 85523c90e5
commit 60bf9110b9
No known key found for this signature in database
GPG key ID: 1E892DB2A5F84479
5 changed files with 41 additions and 52 deletions

View file

@ -3,8 +3,8 @@
/* "background" is short for a bunch of unnecessary CSS rules /* "background" is short for a bunch of unnecessary CSS rules
* background-color is all I need * background-color is all I need
* I've been told that pure white on black is a bit harsh */ * I've been told that pure white on black is a bit harsh */
background-color: #0c0c0c; background-color: #0e0e0e;
color: #ececec; color: #eee;
} }
a { a {
@ -21,10 +21,9 @@
blockquote, blockquote,
:not(pre) > code, :not(pre) > code,
hr,
img, img,
pre { pre {
border-color: #333; border-color: #444;
} }
/* stylelint-disable -- hasn't heard of "prefers-contrast" yet */ /* stylelint-disable -- hasn't heard of "prefers-contrast" yet */

View file

@ -1,37 +1,20 @@
/* CSS that adds the bare minimum for a simple layout. /* CSS that adds the bare minimum for a simple layout.
* Nothing here exists purely for aesthetics except the unstyled-list; * Nothing here exists purely for aesthetics except the unstyled-list;
* everything else addresses a specific a11y, compatibility, or critical * everything else addresses a specific a11y, compatibility, or critical
* usability need. */ * usability need.
* I also don't define any non-semantic classes besides unstyled-list.
* The the other classnames referenced here are from microformats2. */
/* This site's CSS does 10 major things: /* Start with browser defaults: default fonts, non-dark-mode colors, etc
* 1. sans-serif instead of serif for low-res screens. * Only change things to solve a specific a11y or significant usability
* 2. Consistent font size; <pre> and <code> shouldn't be smaller than * need. One exception: cosmetic improvement for unstyled-list */
* regular text.
* 3. max content width for readability
* 4. single-row nav links widescreen, multiline nav on narrow screens
* 5. Soft border around code and images to disginguish from the
* surrounding page. Images with white/black or transparent
* backgrounds should have clear dimensions, and multiple consecutive
* inline <code> spans should look separate. A <code> span that
* continues across multiple lines should not look like multiple different
* spans.
* 6. Increase the line-spacing a bit so users on mobile devices can
* tap links more easily.
* 7. Horizontally center non-inline images; left-aligned stick out.
* 8. dark.css changes a few colors if the browser wants dark mode.
* 9. Support unstyled lists: for webmentions, post lists, nav links.
* 10. Narrow screen optimization: less-indented blockquotes, overflow
* behavior for <pre>, no figure margins.
* Everything else is browser defaults:
* default fonts, non-dark-mode colors, etc.
*/
html { html {
/* Mobile screens benefit from greater line-spacing so links are /* Mobile screens benefit from greater line-spacing so links are
* further apart. Dyslexic users prefer the spacing too. * further apart. Dyslexic users prefer the spacing too.
* <100dpi screens: sans-serif is better. Why did browsers settle * <100dpi screens: sans-serif is better. Why did browsers settle
* on serif being the default?? */ * on serif being the default?? */
font: 100%/1.5 sans-serif; font: 105%/1.5 sans-serif;
/* Aligning to the center with space on both sides prevents accidental /* Aligning to the center with space on both sides prevents accidental
* link activation on mobile devices. */ * link activation on mobile devices. */
@ -55,21 +38,30 @@ html {
@supports (border-inline-start: 6px) { @supports (border-inline-start: 6px) {
/* narrow screens: reduce margin for blockquotes a lot, using /* narrow screens: reduce margin for blockquotes a lot, using
* a thick left-side border instead. */ * a thick left-side border instead, or a right-side border in
* RTL locales. Some browsers like NetSurf or IE don't support this,
* but they're pretty much only used on the desktop where a huge indent
* is less of a problem.*/
blockquote { blockquote {
border-inline-start: 6px solid #bbb; border-inline-start: 5px solid #aaa;
margin: 0; margin: 0;
padding: 0 0.8em; padding: 0 0.8em;
} }
}
/* single-line nav on widescreen and print. /* single-line nav on widescreen and print.
* Single-line nav on print saves almost half a page. */ * Single-line nav on print saves almost half a page. */
@media print, (min-width: 32em) { @media (min-width: 32em) {
header nav li { header nav li {
display: inline; display: inline;
padding-inline-end: 0.5em; /* inline-end doesn't work in netsurf. -right should stil make sense
* in RTL machine translation, it'll just look a bit indented. */
padding-right: 0.5em;
} }
} }
a[aria-current="page"] {
font-weight: bold;
} }
/* narrow screens: remove unused figure margin. */ /* narrow screens: remove unused figure margin. */
@ -133,7 +125,7 @@ pre {
img, img,
pre, pre,
:not(pre) > code { :not(pre) > code {
border: 1px solid #bbb; border: 1px solid #aaa;
} }
/* center images that aren't my indieweb icon; same justification as /* center images that aren't my indieweb icon; same justification as
@ -146,15 +138,21 @@ img:not(.u-photo) {
max-width: 100%; max-width: 100%;
} }
/* WCAG Technique C25: use borders to separate sections.
* Also use "content-visibility: auto" to improve performance by
* reducing the number of DOM nodes rendered at once. */
footer,
section[role="doc-endnotes"] {
border-top: 1px solid #aaa;
content-visibility: auto;
}
/* Todo: /* Todo:
* - Some browsers don't scale SVGs properly; the img container * - Some browsers don't scale SVGs properly; the img container
* dimensions crop the image rather than scale it. Investigate * dimensions crop the image rather than scale it. Investigate
* if this only applies to Internet Explorer or if it applies to * if this only applies to Internet Explorer or if it applies to
* other uncommon browsers too. If any non-IE browsers do this and/or * other uncommon browsers too. If any non-IE browsers do this and/or
* if the spec allows this behavior, try to correct it here. * if the spec allows this behavior, try to correct it here.
* - Investigate reduced-contrast for dark mode
* - Wait till Webkit fixes its broken-ass default dark stylesheet * - Wait till Webkit fixes its broken-ass default dark stylesheet
* then consider trimming the dark stylesheet I provide. * then consider trimming the dark stylesheet I provide.
* - Investigate CSS-based hints to screenreaders. * - Investigate CSS-based hints to screenreaders. */
* - See if any "-left" properties should switch to "-right" for users
* who machine-translate the page to a RTL language. */

View file

@ -1,4 +1,3 @@
<hr>
<footer id="site-footer"> <footer id="site-footer">
<p> <p>
Copyright © <span itemprop="copyrightYear">{{now.Year}}</span> <span itemprop="copyrightHolder">{{- partial "indieweb-author.html" -}}</span> · Copyright © <span itemprop="copyrightYear">{{now.Year}}</span> <span itemprop="copyrightHolder">{{- partial "indieweb-author.html" -}}</span> ·

View file

@ -14,9 +14,9 @@
{{ range $i, $r := after 1 (getCSV "," "/csv/webrings.csv") }} {{ range $i, $r := after 1 (getCSV "," "/csv/webrings.csv") }}
<li> <li>
<p> <p>
<a href="{{- index $r 1 -}}" rel="nofollow ugc" referrerpolicy="{{ $refPol }}"></a> · <a href="{{- index $r 1 -}}" rel="nofollow ugc" referrerpolicy="{{ $refPol }}" aria-label="previous site"></a> ·
<a href="{{- index $r 2 -}}">{{- index $r 0 -}}</a> · <a href="{{- index $r 2 -}}">{{- index $r 0 -}}</a> ·
<a href="{{- index $r 3 -}}" rel="nofollow ugc" referrerpolicy="{{ $refPol }}"></a> <a href="{{- index $r 3 -}}" rel="nofollow ugc" referrerpolicy="{{ $refPol }}" aria-label="next site"></a>
</p> </p>
</li> </li>
{{ end }} {{ end }}

View file

@ -25,13 +25,6 @@
{{ partial "processed-content" . -}} {{ partial "processed-content" . -}}
</div> </div>
</article> </article>
<hr>
<p>
{{- if .PrevInSection -}}<a href="{{ .PrevInSection.Permalink }}">Previous</a>{{- end -}}
{{- if and (.PrevInSection) (.NextInSection) }} · {{ end -}}
{{- if .NextInSection -}}<a href="{{ .NextInSection.Permalink }}">Next</a>{{- end -}}
</p>
<hr>
<footer class="comment"> <footer class="comment">
<p><a href="mailto:~seirdy/seirdy.one-comments@lists.sr.ht">Send an email</a> to leave a comment in the <a href="https://lists.sr.ht/~seirdy/seirdy.one-comments">mailing list</a> for seirdy.one. You'll have to send in plain text; please <a href="https://useplaintext.email/">learn how</a>. Alternatively, send your email <a href="mailto:seirdy@seirdy.one">directly to me</a>; it wont show up on the mailing list, but Ill see it.</p> <p><a href="mailto:~seirdy/seirdy.one-comments@lists.sr.ht">Send an email</a> to leave a comment in the <a href="https://lists.sr.ht/~seirdy/seirdy.one-comments">mailing list</a> for seirdy.one. You'll have to send in plain text; please <a href="https://useplaintext.email/">learn how</a>. Alternatively, send your email <a href="mailto:seirdy@seirdy.one">directly to me</a>; it wont show up on the mailing list, but Ill see it.</p>
<p>This site also supports <a href="https://indieweb.org/webmention">Webmentions</a>. Webmentions received for this post will appear below after I approve them. I sometimes send Webmentions to myself on behalf of linking sites that don't support them. Check the <a href="https://web.archive.org/">Wayback Machine</a> if any links are broken.</p> <p>This site also supports <a href="https://indieweb.org/webmention">Webmentions</a>. Webmentions received for this post will appear below after I approve them. I sometimes send Webmentions to myself on behalf of linking sites that don't support them. Check the <a href="https://web.archive.org/">Wayback Machine</a> if any links are broken.</p>