使用 span 作为 "buttons" 是不好的做法吗? W3Schools 正在这样做

Is it bad practice to use spans as "buttons"? W3Schools is doing that

考虑这个模态示例(以及其中的许多其他示例):https://www.w3schools.com/howto/howto_css_modals.asp

他们使用 span 标签,作为模式的关闭按钮。这在语义上是不是不正确?或者是否有一些合法化来做到这一点?

“网络标准化联盟”提出这样的例子有点奇怪。但也许我在这里遗漏了一些东西。

Is it bad practice to use spans as “buttons”?

是的。默认情况下,它们是:

  • 未宣布为屏幕阅读器交互
  • 不在 Tab 键顺序中,因此键盘用户无法访问

可以通过使用 tabindex 和 ARIA 来解决这个问题,但使用真正的 <button> 更简单,也更好地支持。

您可以从 Inclusive Components by Heydon Pickering 更深入地了解这个主题。

W3C is doing that

不,他们不是。

W3Schools 是一个质量低劣、广告缠身的教程网站,但恰好具有良好的 SEO,因为它们一直存在。

他们选择了一个容易与 W3 联盟混淆的名称。但是请注意,“联盟”和“学校”不是同一个词!

如果您至少添加 tabindex 属性,这不是一个坏习惯。用户也应该通过键盘到达按钮:

<span tabindex="0">Button</span>

另外一个好的做法是添加 ARIA - attributes:

<span tabindex="0" role="button" aria-pressed="false">Button</span>