【问题标题】:How to create a mask over an image (not a clip-path, but the opposite)如何在图像上创建蒙版(不是剪辑路径,而是相反)
【发布时间】:2017-02-13 04:45:48
【问题描述】:

我正在尝试对 div 应用蒙版,以便通过它看到背景图像。我所看到的一切都是关于剪辑路径的,但我正在寻找与此相反的东西。剪辑路径显示剪辑内部的内容。我试图让它成为一个面具,这样你就可以看到剪辑的外部。

Here is an example of what I am trying to achieve,下面是示例的完整描述。

我有一个带有背景图片的 div。在这个 div 内部是另一个 div,它覆盖了其父级的全部宽度和高度(带有背景图像),并且具有半透明 (rgba) 背景色。我正在尝试向此叠加 div(具有 rgba 背景颜色的那个)添加一个蒙版,以便从中间切出一个圆圈,显示没有颜色叠加的完整背景图像。

Here is a link to a jsfiddle 设置了我正在谈论的内容,但没有面具(因为我不知道该怎么做)。

<div class="backgroundImage">
  <div class="backgroundOverlayWithMask">
    <!-- content will be here -->
  </div>
</div>

.backgroundImage {
  width: 100%;
  height: 500px;
  background: url(https://upload.wikimedia.org/wikipedia/commons/4/47/New_york_times_square-terabass.jpg) no-repeat center center;
  background-size: cover
}

.backgroundOverlayWithMask {
  width: 100%;
  height: 500px;
  background-color: rgba(0, 0, 0, 0.75);
}

【问题讨论】:

  • 我会创建一个位图图像蒙版,例如 png 或 gif。
  • 我真的需要一个清晰的响应解决方案来解决这个问题,它可以在标准和视网膜屏幕上工作。如果我使用图像蒙版,蒙版的边缘会在不同的屏幕尺寸下变得模糊/模糊。
  • 无论如何,afaik,没有标准的方式来实现你想要的只是 css...我也不认为清晰的高分辨率几何形状会别名太糟糕,fwiw
  • 我不是在寻找“只是 css”的解决方案。这可以是 css、javascript、svg 或以上所有。我已经看到 svg 有一个 标签,但我还没有找到让它工作的方法。不过谢谢!
  • 好吧,我想您可以使用画布动态生成蒙版,然后导出到可以提供 CSS 的数据/blob url。一个简单的圆圈应该很容易用 w3fools 代码运行......

标签: javascript jquery html css mask


【解决方案1】:

我想我有一个使用box shadow:afterflex 的解决方案。 Fiddle。基于 web-tiki 的回答 here

#inner {
  position: relative;
  width: 100%;
  height: 200px;
  overflow: hidden;
  display: flex;
  justify-content: center;
}
#inner:after {
  content: '';
  border-radius: 100%;
  width: 150px;
  height: 150px;
  box-shadow: 0px 0px 0px 2000px rgba(0, 0, 0, 0.5);
  -webkit-box-shadow: 0px 0px 0px 2000px rgba(0, 0, 0, 0.5);
  -moz-box-shadow: 0px 0px 0px 2000px rgba(0, 0, 0, 0.5);
  align-self: center;
}
#container {
  background: url('http://via.placeholder.com/800x200');
  background-size: cover;
}
<div id="container">
  <div id="inner">
  </div>
</div>

【讨论】:

  • 哇,太酷了。似乎在 Chrome 中工作得很好,但在 Safari 中却不行。我将不得不研究如何在所有浏览器上进行这项工作。谢谢!
  • @bluebomber 查看我添加到 safari 答案中的 webkit 扩展。
  • @lamelemon 似乎仍然无法在 Safari 中工作
  • @bluebomber tbh 我没有 Mac 或无论如何要在 Safari 中进行测试。盒子阴影是完全显示还是发生了什么?
  • @lamelemon 通过这样做,我能够在所有桌面浏览器上显示蒙版:-webkit-appearance: none; -webkit-box-shadow: 0px 0px 0px 2000px rgba(0, 0, 0, 0.75); -moz-box-shadow: 0px 0px 0px 2000px rgba(0, 0, 0, 0.75); box-shadow: 0px 0px 10px 2000px rgba(0, 0, 0, 0.75); 你会看到我只在 box-shadow 属性中添加了 10px。现在,我只是无法让它在 iOS 中运行,但我正在研究它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 2016-10-05
  • 1970-01-01
  • 2020-08-21
  • 2015-10-07
  • 1970-01-01
  • 2021-06-17
相关资源
最近更新 更多