为什么我获得“形式元素没有关联的标签”。即使在那里与输入相关联?

发布于 2025-01-26 19:26:12 字数 993 浏览 2 评论 0原文

我有此代码此React代码

const Icon = styled.div`...`
const ToggleInput = styled.input`...`
const Lines = styled.label`...`
const Line = styled.div`...`

return (
  <Icon>
    <ToggleInput
      id="NavigationMenuToggler"
      name="NavigationMenuToggler"
      role="button"
      aria-controls={DOMConfig.aria.mobileMenu}
      type="checkbox" />
    <Lines for="NavigationMenuToggler" aria-controls="MobileNavigationMenu">
      <Line />
      <Line />
      <Line />
    </Lines>
  </Icon>
)

,该代码生成此HTML

<div>
  <input type="checkbox" id="NavigationMenuToggler" name="NavigationMenuToggler" role="button" aria-controls="MobileNavigationMenu" class="sc-jffIyK kktnkO">
  <label for="NavigationMenuToggler" aria-controls="MobileNavigationMenu" class="sc-gSYCTC eRjJOo"></label>
</div>

属性标签的等于输入的ID。但是,在灯塔中,我仍然看到“形式元素没有关联的标签”警告。为什么会发生这种情况?

I have this code this react code

const Icon = styled.div`...`
const ToggleInput = styled.input`...`
const Lines = styled.label`...`
const Line = styled.div`...`

return (
  <Icon>
    <ToggleInput
      id="NavigationMenuToggler"
      name="NavigationMenuToggler"
      role="button"
      aria-controls={DOMConfig.aria.mobileMenu}
      type="checkbox" />
    <Lines for="NavigationMenuToggler" aria-controls="MobileNavigationMenu">
      <Line />
      <Line />
      <Line />
    </Lines>
  </Icon>
)

which generates this HTML

<div>
  <input type="checkbox" id="NavigationMenuToggler" name="NavigationMenuToggler" role="button" aria-controls="MobileNavigationMenu" class="sc-jffIyK kktnkO">
  <label for="NavigationMenuToggler" aria-controls="MobileNavigationMenu" class="sc-gSYCTC eRjJOo"></label>
</div>

The label's for attribute is equal to the input's id. In lighthouse, however, I'm still seeing the "Form elements do not have associated labels" warning. Why is this happening?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清风不识月 2025-02-02 19:26:12

存在&lt; label&gt;,并正确链接到&lt; input&gt;,但完全为空。
结果,就像不存在一样。

您的标签必须具有一些文本内容,以便屏幕读取器在降落在输入上时可以说些什么。
如果您不希望将该文本显示在屏幕上,则可以使用视觉隐藏的文本技术将其从屏幕上发送。
另外,您可以在输入上添加一个属性ARIA-LABEL,这也必须出于相同的原因也是非空的。

The <label> is present and is correctly linked to the <input>, but it is completely empty.
As a consequence, it is like if it was not present.

Your label must have some text content, so that screen readers can say something when landing on the input.
If you don't want that text to be displayed on screen, you can send it off screen, by using the visually hidden text technique.
Alternatively, you can add a an attribute aria-label on the input, which must also be non-empty for the same reason.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文