Accessible Generated Content
work in progressLet’s assume we have a simple collection of articles of different types:
<article>
<h2>Hello World</h2>
<small class="content-type">blog post</small>
</article>
<article>
<h2>Lipsum</h2>
<small class="content-type" data-symbol="✏️">work in progress</small>
</article>We’re using CSS’s
attr() to add a
decorative icon: Either a default or drawn from data-symbol. Unfortunately,
fallback values are not yet widely supported there, resulting in content: attr(data-symbol, "📝") possibly being ignored. But we can employ the cascade
for a universal fallback:
content: "📝 ";
content: attr(data-symbol, "📝") " ";If we now want to improve accessibility via alternative text, also not universally supported yet, we need account for additional permutations:
/* baseline */
content: "📝 ";
content: "📝 " / "";
/* dynamic */
content: attr(data-symbol, "📝") " ";
content: attr(data-symbol, "📝") " " / "";This seems less than ideal, but perhaps inevitable at this point? When in doubt, rely on Jeremy Keith’s guiding principles:
given the choice between making something my problem, and making something the user’s problem, I’ll choose to make it my problem every time