css - Safari 中的边框半径和大范围投影

标签 css safari

我今天在使用 Safari(版本 11.0 (12604.1.38.1.7)、边框半径和大范围投影时遇到了问题。Chrome、FF 或 Edge 中不会出现此问题。

使用大阴影的原因是为了实现类似窗口的效果,其中元素可见,并且阴影是半透明的,覆盖整个屏幕。

经过一些故障排除后,我确定投影在 Safari 中可以正常工作,但当分布非常大(如此处)并且容器的边框半径全部匹配时,效果就不行了。将一个 Angular 边框半径调整为相差 1 个像素,问题就消失了,并且投影范围达到了我想要的大小。

Here's a quick and dirty CodePen demonstrating the issue.
该按钮将切换相等与不相等的边框半径类别。但请随意调整盒子阴影大小,并注意它在某个点上工作正常(2039px 有效,2040px 不行。这与我之前在自己的代码中发现的断点(大约 2019 年)略有不同) .

我想我也必须在这里粘贴 CodePen 中的代码。

HTML

<div class='wrapper'>
  <div id='box-shadow-container' class="equal-border-radius">
    <div id='box-shadow-fun'> 
    What's going on here? <br/><br/>
    <button id='toggle-radius-class'> Swap Border Radius Class</button>
  </div>
  </div>
</div>

CSS

body {
  display: flex;
  flex-direction: column;
  min-height: 400px;
}

.wrapper {
  flex-grow: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}

#box-shadow-fun {
  padding: 5px;
}

#box-shadow-container {
  border: 1px solid #CCC;
  box-shadow: 0 0 0 5000px black;
}

.one-different-border-radius {
  border-top-left-radius: 5px;
  border-top-right-radius: 5px;
  border-bottom-right-radius: 5px;
  border-bottom-left-radius: 4px;
}

.equal-border-radius {
  border-top-left-radius: 5px;
  border-top-right-radius: 5px;
  border-bottom-right-radius: 5px;
  border-bottom-left-radius: 5px;
}

有人知道这里的问题吗?我可以忍受一个 Angular 的像素半径不同,但我不喜欢不理解错误修复,因为它似乎将来可能会损坏,而且我仍然不知道发生了什么。

最佳答案

我不知道不等的边框半径是怎么回事,但 Safari 似乎不能很好地处理非常大的盒子阴影,并且如果边框半径太大,它将拒绝绘制它。如果您还设置了一个小的模糊半径(除非在阴影的最极端处,否则应该不会被注意到),它确实有效:

#box-shadow-container {
  box-shadow: 0 0 500px 5000px black;
                  ^^^^^
}

但是这会破坏 Firefox。您应该检测 Safari 浏览器并仅在 Safari 中应用此样式。

尝试调整模糊半径和散布值,以获得可以在您需要的最小尺寸下工作的东西。

关于css - Safari 中的边框半径和大范围投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46898544/

相关文章:

javascript - 在 JS 中获取 Android Chrome 浏览器地址栏高度

javascript - 提交一个checkbox表单,并显示在同一页面的 "div"

javascript - 顶部带有附加图像的 Bootstrap 进度栏

javascript - 无法禁用/覆盖上下文菜单 Safari 全屏模式

angularjs - Angular ng-bind-html 在 Safari iOS7 上写入 HTML 2 次

html - 在不使用 jQuery 或 Javascript 的情况下使 html 表响应

html - 在特定位置放置带有悬停图像的圆圈

javascript - jQuery scrollTop() 似乎在 Safari 或 Chrome (Windows) 中不起作用

html - Safari 浏览器中的 `height: intrinsic` 是什么?

python - 解决 Safari 中 Webdriver 缺乏交互 API 的问题