您不必为 Apple Pay 设计自己的按钮。事实上,苹果公司实际上告诉您不能这样做。那么,在网络上该怎么办呢?谢天谢地,苹果提供了一种方法。这有点奇怪,涉及一堆专有的 CSS 属性和值,但又能怎么办呢。
他们为此提供了所有文档,但我会将其移植到此处,以便您查看实际演示。
以下是他们提供的准确代码
查看 CodePen 上的示例
Apple Pay 按钮,作者 Chris Coyier (@chriscoyier)
在 CodePen 上。
在 Safari 中运行良好,但 Chrome 和 Firefox 则完全搞糊涂了。

这并不令人意外,因为它在@supports not (-webkit-appearance: -apple-pay-button)
场景中使用了诸如-webkit-named-image(apple-pay-logo-white);
之类的背景,我无法想象除了苹果之外还有谁会实现它。
此外……他们建议使用一个空的<div>
,这不太好。
我们可以毫不费力地将其转换为<button>
。只需为 Firefox 添加border: 0;
即可。
我想让它们更像……
<button class="apple-pay-button apple-pay-button-white">
Apple Pay
</button>
但随后我们得到

但是我们可以使用text-indent: -9999px;
将其隐藏,然后确保正确设置颜色,以便我们拥有可接受的语义按钮。
查看 CodePen 上的示例
Apple Pay 按钮,作者 Chris Coyier (@chriscoyier)
在 CodePen 上。
但更有可能……我怀疑会看到
@supports not (-webkit-appearance: -apple-pay-button) {
.container-that-offers-apple-pay {
display: none;
}
}
也就是说,如果您使用的是不支持该支付方式的浏览器,为什么要显示该区域呢?
他们的其他演示也存在类似的问题。例如,“使用购买”按钮会为您提供
<div class="apple-pay-button-with-text apple-pay-button-white-with-text">
<span class="text">Buy with</span>
<span class="logo"></span>
</div>
其一,它不是按钮,其二,它没有完整的文本来说明正在发生的事情。
提醒一下。我不会说不要使用它,但我会说花点时间清理 HTML 并使样式正确,以便使其跨浏览器兼容。
苹果提供如此糟糕的代码,这完全是不负责任的。
如果您想要一个按钮,请使用
<button />
!至少,添加role="button"
!而且 BEM 看起来也是一个不错的选择。
Ben,你说得对。
至于
@supports not (-webkit-appearance: -apple-pay-button)
条件块:Web 上的第一个版本的 Apple Pay 要求网站绘制他们自己的 Apple Pay 按钮。然后,您将使用 SDK 确定 Apple Pay 是否可用,如果不可用则隐藏字段。