html - 我们什么时候需要 div 和 span 可以点击,为什么不使用按钮呢?
问题描述
据我了解,网页上任何可点击的内容都必须是链接或按钮。如果在点击时,您想将用户带到不同的页面或新的上下文,您应该使用链接,如果您在停留在同一页面时触发操作,则应该使用按钮。
这种理解是否排除了任何用例?
我试图了解何时可以将 div 或 span 与单击处理程序一起使用?你为什么不宁愿使用一个按钮(并正确地设置它的样式)。
如果我们可能永远不需要在 div 或 span 或其他元素上使用它,为什么会存在 role="button" (除了切换按钮用例,可能存在),因为我们可以改为使用按钮并正确设置它的样式?究竟有哪些用例是不可能的?
编辑:保持问题原样关闭,但在此处添加更多发现
- role="button" 在 HTML 之外仍然很有用,作为 aria 角色
- 没有按钮语义的 div 仅可用于增强鼠标用户的某些功能,前提是该功能已经以其他方式向键盘和屏幕阅读器用户公开。反过来,这种用法也验证了并非所有可交互的东西都需要是按钮或链接
解决方案
可点击 div 的用例
一个用例是使div
容器可点击,同时内部已经有一个交互式元素,如按钮或链接。
这将改进鼠标导航,使整个区域可点击,而只有链接文本可以通过键盘获得焦点。
但是这个 div 必须没有任何作用,因为您不能在另一个交互元素中拥有交互元素。
button
角色用例
唯一有效的用例是我们想要覆盖默认本地角色的已经激活的元素。
这个定义似乎与属性一起使用<input type="checkbox" />
的元素相匹配aria-pressed
推荐阅读
- c++ - 使用 std::forward 与 RefRefCast 完美转发
- android - 如何让应用程序 UI 在所有设备上 100% 相同?
- python - Graphene 中提供的 GraphQLError() 有多大用处?
- python - 如何保存 matplotlib imshow() 的结果数据?
- android - 动态功能模块导航 IllegalStateException:包含
的 id 与目标 id 不同 - asp.net - 使用 SSRS 报告参数接受来自 ASP.NET Web 应用程序的逗号分隔整数
- uniqueidentifier - 从调查中获取所有 responseId
- linux - wine 只能找到带有 sudo 的库
- c# - Ascii最小删除距离的C#实现
- python - 如何使用列表列表创建表