突破按钮

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 200 美元的免费积分!

Andy 介绍了一种技术,其中语义 <button> 用于卡片组件中,但实际上,整个卡片都是可点击的。 技巧在于放置一个超出按钮的伪元素,覆盖整个卡片。 权衡是伪元素位于文本之上,因此文本选择受到了一些阻碍。 我认为这比将整个区域都设为 <button> 更好,因为那样会牺牲语义,并可能导致辅助技术出现极端怪异的情况。

查看 CodePen 上 Andy Bell 的示例
语义的、渐进增强的“突破”按钮
(@andybelldesign)
CodePen 上。

如果您的情况需要 <a> 链接而不是 <button>,则可以执行相同的操作,但如果是这种情况,您实际上可以将整个区域包装在链接中,而不会造成太多麻烦,然后将看起来像按钮的部分包装在一个 span 或其他元素中,使其看起来像按钮。

这让我想起了 嵌套链接问题:一个包含其他不同链接区域的大型链接块。 绝对不能嵌套锚链接。 Sara Soueidan 给出了 最佳答案,其中“覆盖”链接放置在卡片内部,并绝对定位以覆盖该区域,而内部的其他链接可以通过 z-index 分层在顶部。

我已将她的解决方案移至 CodePen 以供参考

查看 CodePen 上 Chris Coyier 的示例
嵌套链接解决方案
(@chriscoyier)
CodePen 上。