html - 移动 Safari 上的 CSS 剪辑路径就像内容框一样

标签 html css svg

我有一个用 clip-path 切割的容器并且有一些背景颜色。在支持 clip-path 的所有浏览器中都能完美运行但移动版 Safari(也可能是桌面版 Safari,无法测试)。
https://codepen.io/Deka87/pen/PXVNgQ
HTML:

<!-- Container -->
<div></div>

<!-- Clip -->
<svg>
  <defs>
    <clipPath id="clip" clipPathUnits="objectBoundingBox">
      <path d="M 0 0 V 1 A 5 5 0 0 1 1 1 V 0 Z"></path>
    </clipPath>
  </defs>
</svg>
CSS:
div {
  min-height: 300px;
  background-color: gray;
  padding: 100px 0;
  -webkit-clip-path: url(#clip);
  clip-path: url(#clip);
}

svg {
  width: 0;
  height: 0;
  position: absolute;
}
Safari 中的问题是当 clip-path应用于容器的背景,就像它的 background-clip属性设置为 content-box即它不会在填充的后面,因此这些区域保持空白。

最佳答案

我刚刚遇到了同样的问题,并且能够通过向正在剪辑的元素添加一个额外的包装 div 并将填充移动到一个子元素中来解决它。这不是真正的修复,但让我继续前进。

HTML:

<!-- Container -->
<div class="parent">
  <div class="child">

  </div>
</div>

<!-- Clip -->
<svg>
  <defs>
    <clipPath id="clip" clipPathUnits="objectBoundingBox">
      <path d="M 0 0 V 1 A 5 5 0 0 1 1 1 V 0 Z"></path>
    </clipPath>
  </defs>
</svg>

CSS:
.parent {
  -webkit-clip-path: url(#clip);
  clip-path: url(#clip);
}

.child {
  background-color: gray;
  min-height: 300px;
  padding: 100px 0;
}

svg {
  width: 0;
  height: 0;
  position: absolute;
}


请参见此处的示例:
https://codepen.io/mprquinn/pen/8b1e4e6004e989491f294a8899a94ec7

希望这会有所帮助!

关于html - 移动 Safari 上的 CSS 剪辑路径就像内容框一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54186766/

相关文章:

html - 网站不会调整到移动宽度/元标记?

javascript - 只有一个从其他元素中选择的 javascript 清除类

javascript - 旋转一个 div 元素

php - '/' 以外的共享主机页面上的 Laravel 未显示

jquery - 移动 HTML5 SVG 路径

javascript - 用于信息图表的世界地图 API

css - 设置 highcharts 渲染器路径标题的颜色

javascript - 使用 jQuery 检测 CSS 文本溢出省略号

html - 页面其余部分的 CSS

javascript - 使用上下键导航网页和隐藏/显示 div