1
0
Fork 0
mirror of https://git.sr.ht/~seirdy/seirdy.one synced 2024-12-27 02:42:11 +00:00
seirdy.one/assets/css/main.css

154 lines
4.8 KiB
CSS
Raw Normal View History

2022-03-26 19:32:22 +00:00
/* CSS that adds the bare minimum for a simple layout.
* Nothing here exists purely for aesthetics except the unstyled-list;
* everything else addresses a specific a11y, compatibility, or critical
* usability need. */
/* This site's CSS does 10 major things:
* 1. sans-serif instead of serif for low-res screens.
* 2. Consistent font size; <pre> and <code> shouldn't be smaller than
* 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.
2021-06-14 04:05:58 +00:00
* 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.
*/
2020-12-27 05:04:25 +00:00
2022-03-26 19:33:01 +00:00
html {
2022-03-26 19:32:22 +00:00
/* Mobile screens benefit from greater line-spacing so links are
* further apart. Dyslexic users prefer the spacing too.
* <100dpi screens: sans-serif is better. Why did browsers settle
* on serif being the default??*/
2022-03-26 19:33:01 +00:00
font: 100%/1.5 sans-serif;
2022-03-26 19:32:22 +00:00
/* WCAG recommends a max line width. Not everyone can resize the
* viewport. TODO: see if this should be reduced.
* Aligning to the center with space on both sides prevents accidental
* link activation on mobile devices.*/
margin: auto;
2022-03-26 19:33:01 +00:00
max-width: 45em;
padding: 0 3%;
}
2022-03-26 19:32:22 +00:00
.e-content {
2022-03-26 19:33:01 +00:00
max-width: 38em;
padding: 0;
2022-03-26 19:33:01 +00:00
margin: auto;
2022-03-26 19:32:22 +00:00
}
/* narrow screens: reduce margin for blockquotes a lot, using
* a thick left-side border instead. */
blockquote {
border-left: 6px solid #bbb;
margin-left: 0;
padding-left: 1em;
}
2022-03-26 19:32:22 +00:00
/* narrow screens: remove unused figure margin. */
figure {
margin: 0;
}
2022-03-26 19:32:22 +00:00
/* Mobile optimization: nav links are tappable with fat fingers */
.unstyled-list li,
nav li {
2022-03-26 19:32:22 +00:00
margin-bottom: 0.5em;
}
2022-03-26 19:32:22 +00:00
/* Lists without bullets: navlinks, posts lists, webmentions.
* Those three are lists whose items are already easily distinguishable,
* rendering bullet points as unnecessary extra visual noise. */
.unstyled-list {
padding-left: 0;
}
.unstyled-list li {
list-style-type: none;
}
2022-03-26 19:32:22 +00:00
/* single-line nav on widescreen */
@media (min-width: 32em) {
2022-03-26 19:32:22 +00:00
header nav li {
display: inline;
2022-03-26 19:32:22 +00:00
padding-right: 0.5em;
}
}
2020-11-30 21:17:15 +00:00
/* browsers make <pre> small for some dumb legacy reason
* and this somehow fixes that. */
code,
pre {
/* stylelint-disable -- compatibility hack */
font-family: monospace, monospace;
/* stylelint-enable */
}
/* Narrow screens: long words can cause content to flow out of the
* viewport, triggering horizontal scrolling. Allow breaking words in
* content I don't control (comments). For content I do control, I just
* add soft hyphens to the HTML. */
.u-comment,
:not(pre) > code {
overflow-wrap: break-word;
/* borders shouldn't touch text */
padding: 0 0.1em;
}
2020-11-30 21:17:15 +00:00
/* Narrow screens: allow horizontal scroll in a pre block, but don't
* clip it vertically */
2020-12-12 10:42:45 +00:00
pre {
/* csslint ignore:start */
overflow: auto visible;
/* csslint ignore:end */
padding: 0.5em;
}
/* Distinguish images from the background in case their color is
* too similar to the page background color. Also put a border around
2022-03-26 19:32:22 +00:00
* <pre> so that it looks just like <code> (see below). The use of
* borders in place of background colors for distinguishing elements
* is an officially documented WCAG technique. */
img,
pre,
:not(pre) > code {
border: 1px solid #bbb;
}
2022-03-26 19:32:22 +00:00
/* center images that aren't my indieweb icon; same justification as
* for centering the body contents. */
img:not(.u-photo) {
display: block;
height: auto;
margin: auto;
max-width: 100%;
}
2022-03-26 19:32:22 +00:00
/* Todo:
* - Some browsers don't scale SVGs properly; the img container
* dimensions crop the image rather than scale it. Investigate
* 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
* 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
* then consider trimming the dark stylesheet I provide.
* - Narrow screen optimization for bullet indents.
* - 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. */