不久前,我们在 CSS-Tricks 上深入探讨了 覆盖默认按钮样式。 使用普通的、完全跨浏览器支持的样式,您需要 6 到 10 个 CSS 规则来拆除按钮上的任何内容,然后设置自己的样式。 如果您问我,这没什么大不了的,尤其是在您很可能无论如何都会设置按钮样式的情况下。
Scott O'Hara 也对此进行了研究,包括一些有趣的其他 CSS 探索,但由于各种原因,这些探索都没有成功。
display: contents;
– 存在一些基于语义的无障碍问题。all: unset;
– 不会重置 display 值,浏览器支持不够好。
我花了一点时间才理解这一点,包括与 Scott 通过私信进行了一些交流。 我很困惑,他所阐述的正确方法是 <span role="button" tabindex="0" onClick="...">
。 什么?! 我心想。 强制非按钮元素表现得像按钮,并以其他方式复制所有按钮功能,这几乎从来都不是正确的方法。 事实上,如果您只是有一个或两个单词的按钮,您可能不需要这样做,只需取消按钮样式即可。 问题在于:您无法取消 <button>
上的 inline-block
。 显然,这根本不可能。 您可以将其设置为 display: inline;
,它会接受,但它 不会像那样工作。