html - 是否可以将按钮标签设置为看起来像链接?
问题描述
我在互联网上看到很多关于<a>
看起来像按钮的标签的讨论,以及所有链接必须遵守的规则。但是,我对<button>
样式看起来像链接的标签感到困惑。
我正在创建一个单页应用程序,我的导航组件负责呈现/隐藏网站的不同部分。一次只能看到一个部分,因此我将每个部分视为具有自己路线的独特页面。
我的导航控件是按钮,而不是链接。我这样做是因为我知道没有任何有效的内容,我可以将其放在 href 中(假设隐藏的内容不存在于 DOM 中)。
我在互联网上读到,出于可访问性的原因,按钮必须具有样式来识别按钮的优先级。理想情况下,我希望按钮看起来像链接,因为它们的行为类似于链接(尽管不相同)。
样式按钮看起来像链接是否存在任何可访问性问题?将这些按钮设置为按钮更有意义吗?如果它们看起来像按钮,那么优先级应该是什么?用css隐藏隐藏的“页面”是否更有意义,以便我可以将按钮变成<a>
标签并添加href?
这是单页应用程序的典型标记
<div>
<nav>
<ul>
<li>
<button data-name="Skills">Skills</button>
</li>
<li>
<button data-name="Projects">Projects</button>
</li>
<li>
<button data-name="History">History</button>
</li>
<li>
<button data-name="Employment">Employment</button>
</li>
<li>
<button data-name="Contact">Contact</button>
</li>
</ul>
</nav>
<div id="content-panel">
Home
</div>
</div>
底部的部分div#content-panel
代表主页。它将被使用 JavaScript 的其他页面替换,其中包含网站的主要内容。
解决方案
如MDN Navigation中所述,希望将a
链接作为子链接。因此,如果您想防止任何可访问性问题,我建议您坚持使用它们,只需删除该href
属性并将 a 添加type="button"
到您的a
标签中。
推荐阅读
- excel - 数据抓取不同的资产类别数据
- flutter - How to stop a future delayed when I change the class
- javascript - 使用其值对对象数组进行排序
- regex - Powershell 正则表达式 Matches[0].Groups 与 Matches.Groups 基于键名的索引
- openlayers - 如何在 geonode 3.0 中更改地图的投影?
- c# - 根据同一行中另一个 ListviewItem 的值更改 WPF 中 listviewitem 的文本颜色
- opengl - 是否可以调整 vbo 的大小
- c++ - 复合赋值运算符的 C++ 概念
- python - 在 tkinter 中使用 'after' 方法的时间延迟独立工作
- django - 如何使用 systemd 使 djangoQ 作为服务运行