主说
#html #网络开发人员 #前端 #a11y

我前几天发布/发布了一个关于<div>标签的使用的半开玩笑的问题。

A post on X that asks, "Why are devs scared to use the <main> element to hold the content of their sites in?"

然后我开始了一个小的对话。然后我开始思考。为什么开发人员不经常使用<main>

“为什么”

昨天我审核了一个极为无法访问的教育平台时,我总结了我的可访问性审计职业。我发送回客户的文档超过100页。那很多。不是最多的,但是很多。通常,对于我作为独奏顾问进行的任何高级审核的100页是标准的。

我看到了<header><footer>元素的用法,但在那里却是<main>的迹象。使用HTML5的元素是:

  • <header>
  • <nav>
  • <section>
  • <article>
  • <aside>
  • <footer>

毫无目光的<main>

A man standing on a mountaintop scanning the horizon at sunrise.

我的意思是没有找到该元素的迹象。

A milk carton with information about missing main elements

“什么”

是恐惧吗?我的意思是,我知道这确实不是恐惧,但是缺乏教育(是)还是缺乏了解语义HTML以及使用语义HTML对没有语义含义的元素的好处?

我过去曾经问过很多回复

没有时间处理HTML。

现在没有足够的时间来处理它。

是X框架,我无法更改。 (如果是开源的,则可以)。

这是习惯,我只是那样做。

什么是语义html?

我正在使用本机应用,而不是混合/网络应用。

这些是很多原因之一。我明白了,但是我20年前得到了它。 10年前。 5年前。但是在2023年?现在,自2008年(15年前)以来,HTML5已经出现了,开发人员应该知道对HTML5。

他们是否知道是一回事。他们应该。你应该。他们是在乎还是在乎您是另一个。你们都应该在乎。

我的意思是,如果您使用其他HTML5元素,为什么要省略<main>?那对我说,无论如何,如果您知道的话,您会很懒惰,如果您对HTML5没有教育,那么您不会进行研究。 <main>是众所周知的元素之一。

所以呢?大事。

这些“地标”对可访问性有影响。如果您曾经阅读过我的大部分文章,那么它们就是可访问性的。使用预期的HTML5地标是通过使屏幕读取器技术和其他辅助技术(例如键盘导航)访问页面结构来帮助残疾人。

当我在框架中创建一个新项目时,当我看到这个时:

<!DOCTYPE html>
<html lang="">
  <head>
    ...
  </head>
  <body>
    <div id="app"></div>
  </body>
</html>

我倾向于在进行可访问性审核时问:“为什么不使用<main>?”只有当您必须提交问题并要求将<div>更改为<main>时,只有它是一个网络或混合应用程序,但这不是我期望发生的事情。

我想看到的更多是这样,如果适用的话:

<!DOCTYPE html>
<html lang="">
  <head>
    ...
  </head>
  <body>
    <main id="app"></main>
  </body>
</html>

好处

  1. 跳到内容链接。当有人使用键盘导航或想跳过重复的内容时,他们可以轻松跳到#main内容区域。

  2. 这是新鲜,新颖和酷的包装师!直到2008年,我将经常使用<div id="wrapper">,然后在项目中更频繁地使用HTML5时,我开始使用<main id="wrapper">或Whate。这是一个地标,为什么不使用它?

  3. 阅读器模式在将内容转换为阅读器视图时寻找<main>元素以及标题和内容结构。

  4. <main>在维护和代码可读性方面容易得多。您可以在那碗Div Div杂烩中的广阔的Divs中的<div>来视觉上发现<main>元素。

  5. 使用<main>也可能在文件中保存一些字节(CSS或其他方式),因为您可以在样式表中使用main而不是使用类或ID(例如.main#main)。

    < /li>
  6. 没有<main>辅助技术无法创建页面内容的准确轮廓(可访问性树)。

我确定我没有列出更多,但事实是,让我们面对现实吧,如果您要使用所有其他HTML5地标,只需在网络或Hybrid Web中使用main Landmark应用程序或您正在撰写网页。

就是这样。不要害怕<main>,如果您还没有,请使用它在项目中适用。

如果您不确定如何使用main,请自我教育自己。您可以用于研究任何HTML或CSS的read the specMDN docs which should be the de facto resource

我知道在某些情况下是一个<div>,我的意思是毫无意义的。我知道,我知道,我明白了。但是...

如果您可以使用<main>,请将其放入那里,然后使体验更容易获得。

UnsplashUnsplash