css - Safari 会切断按钮内元素的框阴影

标签 css safari box-shadow

我有一个按钮,里面有一个接收框阴影的元素:

button {
  padding: 0;
  border: 0;
  margin: 0;
  overflow: visible;
  -webkit-appearance: none;
  background: white;
}

.shadow {
  display: inline-block;
  vertical-align: middle;
  height: 40px;
  width: 40px;
  border-radius: 20px;
  background: #dddddd;
  box-shadow: 0 0 20px black;
}
<button>
  <span class="shadow"></span>
  <span>Some Text</span>
</button>

在 Safari 中,此阴影在 <button> 的边缘被切断元素,看起来像这样:

Button with inner box-shadow cut off in Safari

如你所见,我尝试了 -webkit-appearance: noneoverflow: visible已经。我还发现,如果我将按钮更改为 div,则不会出现此问题,但这意味着是一个交互式元素,因此出于可访问性原因,这不是一个好主意。

在搜索这个问题时,到目前为止我没有找到太多帮助,但我想知道是否有人可能知道任何最近的解决方法或 Safari CSS hacks 可以帮助解决这个问题。

最佳答案

我进行了更多搜索(针对 Safari 中按钮上与框阴影无关的裁剪)并找到了一个简单的解决方案。

添加position: relative.shadow让元素超出 <button> 的范围Safari 中的标记。听起来这也适用于文本溢出等情况。

关于css - Safari 会切断按钮内元素的框阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58739501/

相关文章:

css - 在 Mozilla 而不是 Chrome/Edge 上可见边框半径为 50% 的 div 上的框阴影

css - 嵌套text-shadow时,如何继承阴影的颜色?

javascript - 与 div 之间可排序的问题

html - 选择选项未在 Internet Explorer 中显示

javascript - Ext js 4.2.3 beta - Safari 上的离线应用程序区域设置

caching - Post/Redirect/Get 上的整页重新加载忽略缓存控制

css - Safari 没有阻止 <body style ="overflow-y: hidden"> 的滚动

html - 框阴影未显示在仅包含空白的跨度上

javascript - 如何阻止 CSS 规则应用于特定元素

php - 删除 'Search' ,现在大部分标题是可点击区域