使用 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>
考虑这个模态示例(以及其中的许多其他示例):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>