I really have a hard time seeing semantic HTML catching on outside of big business where it’s audited and required for purchases.
First modern CSS destroyed semantic styling. Selectors are written using mostly class names and there is not consistency between article or header from one site to the next. Even buttons are different. Even on a single page there are probably instances where styling by element is undesirable.
Second, while there are plenty of tools out there to tell you that you have a11y errors, few developers see direct benefit to using semantic elements. Screen readers are difficult to use if you have spent a lifetime as a visual user and keyboard shortcuts still don’t seem to be there. Screen reader provide all sorts of nav options based on semantics, but visual mode users are usually stuck with Tab and maybe Arrows. Until visual users can clearly benefit from semantics, it will always be second class.
Third, it’s confusing. Webdev is already a pile of gotchas and obtuse footguns. Semantic HTML is another set of knowledge that developers need to memorize and only get feedback about when using analysis plugins. You can test when a button does or does not work, but it’s harder to test if your semantic HTML is correct.
> Until visual users can clearly benefit from semantics, it will always be second class.
Visual users clearly benefit from the semantics implied by visual styling. Space around content, borders, font changes, phrase-level changes like italics etc. These all layer subtlety, dimension, nuance and structure to a document/page/app. Visual users "get it for free".
If you took away all those things, visual users would feel the loss of context just as non-visual users do.
> modern CSS destroyed semantic styling.
Modern CSS methods didn't "destroy" semantic styling. Any kind of styling refines or highlights the semantics of the content it applies to. The modern techniques have sped up feature development for the visual-user subset. You can still use modern techniques and apply them to headers, sections, buttons, nav controls and so on.
Frankly, if you use the older CSS methods, you write less code to achieve most of the same goals.
"Semantic HTML" is just a means to an end, which is creating websites that many people can use.
Just make normal websites normally, and you'll get like 95% of the way there. Use button for buttons, links for links, etc. Actually put labels on form controls. The beauty of using HTML correctly is that everyone benefits from it.
First modern CSS destroyed semantic styling. Selectors are written using mostly class names and there is not consistency between article or header from one site to the next. Even buttons are different. Even on a single page there are probably instances where styling by element is undesirable.
Second, while there are plenty of tools out there to tell you that you have a11y errors, few developers see direct benefit to using semantic elements. Screen readers are difficult to use if you have spent a lifetime as a visual user and keyboard shortcuts still don’t seem to be there. Screen reader provide all sorts of nav options based on semantics, but visual mode users are usually stuck with Tab and maybe Arrows. Until visual users can clearly benefit from semantics, it will always be second class.
Third, it’s confusing. Webdev is already a pile of gotchas and obtuse footguns. Semantic HTML is another set of knowledge that developers need to memorize and only get feedback about when using analysis plugins. You can test when a button does or does not work, but it’s harder to test if your semantic HTML is correct.