如何使用纯 CSS 和 HTML 叠加图像/水印

新手上路,请多包涵

是否有一种简单的方法可以通过传递一个类来使用相对定位将透明 PNG(或任何其他图像)覆盖在带有 CSS 的图像标签上?

  <img class="watermarked" src="http://placehold.it/500x325.jpg" alt="Photo">

那么 CSS 可能与此类似(不工作):

 .watermarked{
  background-image: url("http://placehold.it/100x100/09f/fff.png");
  position: relative;
  left: 30px;
  opacity: 0.5;
}

理想情况下,我将能够在 CSS 中定义我的“水印”覆盖图像的路径,然后我添加“水印”类的任何图像都会使该图像以一些负面的相对定位覆盖在顶部。它应该能够应用于单个页面上的多个图像,因此单次使用 DIV 将不起作用。

显然,这对保护底层图像没有任何作用……因此将其称为水印并不准确……更多的是临时覆盖。我很惊讶没有现成的答案,但我四处寻找并没有在这里或谷歌上找到答案。

 .watermarked {
  background-image: url("http://via.placeholder.com/100x100/09f/fff.png");
  position: relative;
  left: 30px;
  opacity: 0.5;
}
 <div class="col-lg-3 col-md-6 mb-4">
  <div class="card">
    <img class="card-img-top watermarked" src="http://placehold.it/500x325" alt="">
    <div class="card-body">
      <h4 class="card-title">Card title</h4>
      <p class="card-text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sapiente esse necessitatibus neque.</p>
    </div>
  </div>
</div>

原文由 techtheatre 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

如果您要使用纯 CSS 解决方案,我建议将要加水印的图像包装在容器中 div ,然后我们可以添加一个 :after 伪元素包含我们的水印。

理想的解决方案是将 :after 伪元素直接应用于 img 元素,但不幸的是,大多数浏览器不支持使用 :before -25- :after img 元素。如果是这样,我们可以将 .watermark 直接应用于 img 标签。

在下面的解决方案中,我们在整个图像上覆盖了一个 :after 伪元素,然后将水印徽标放在左上角。

该解决方案的一个优点是 :after 元素覆盖了整个图像,这会阻止用户右键单击并保存图像(尽管这不会阻止任何具有网络经验的人找到图像 URL下载它)。因为 :after 元素覆盖了整个图像,我们还可以应用半透明背景来稍微遮盖带水印的图像。

所以我们剩下这个解决方案:

 .watermarked {
  position: relative;
}

.watermarked:after {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0px;
  left: 0px;
  background-image: url("http://placehold.it/100x100/09f/fff.png");
  background-size: 100px 100px;
  background-position: 30px 30px;
  background-repeat: no-repeat;
  opacity: 0.7;
}
 <div class="watermarked">
  <img src="http://placehold.it/500x325.jpg" alt="Photo">
</div>

原文由 Brett DeWoody 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用实际图像作为背景图像,然后无限地重复使用标签中的水印。这使得将水印后面的背景图像另存为变得更加困难,但也可以防止爬虫为图像编制索引。如果您仍希望抓取带有水印的照片,您只需在 .txt 文件中列出它们的 URL,然后将其作为站点地图提交。

原文由 KHAYRI R.R. WOULFE 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏