用 CSS 叠加图像

Overlaying a Image with CSS

我有一家带画廊的商店。如果我制作的已售出邮票,我想覆盖缩略图。

如果我禁用图像,叠加层会在下面显示,所以我知道它正在插入图像,但它不在顶部。

我看到的:

我怎么知道叠加层在下面(禁用缩略图):

HTML:

<li class="post-66 product type-product status-publish has-post-thumbnail sold-individually shipping-taxable purchasable product-type-simple outofstock">
<center>
<a href="http://url.com">
<img width="150" height="150" src="thumbnail.jpg" class="attachment-shop_catalog wp-post-image" alt="coelho1" />
<h3>Coelho de Peluxe</h3>
</a>
</center>
</li>

CSS:

.outofstock { 
background: url("soldoverlay.png") top left no-repeat;
position: relative; 
z-index: 200;
}
.attachment-shop_catalog{
z-index: 1;
}

谁能帮帮我?

亲切的问候

制作叠加层的最佳方法是使用 pseudo-element 使用您已经拥有的 class outofstock。以这个片段为例:

li {
  position: relative;
  display: inline-block;
  white-space: nowrap;
  text-align:center;
  margin:10px;
}
.outofstock:after {
  content: " ";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background: rgba(0, 0, 0, .6);
  z-index: 10;
}
<ul>
  <li>
    <a href="http://url.com">
      <img width="150" height="150" src="http://placehold.it/150" alt="coelho1" />
      <h3>WITHOUT OVERLAY</h3>
    </a>
  </li>
  <li class="outofstock">
    <a href="http://url.com">
      <img width="150" height="150" src="http://placehold.it/150" alt="coelho1" />
      <h3>OVERLAY</h3>
    </a>
  </li>
</ul>

编辑

要保留 href 的 link,您可以在 a 标签内创建伪元素,如下所示:

li {
  display: inline-block;
  white-space: nowrap;
  text-align: center;
  margin: 10px;
}
a {
  position: relative;
  display:block;
}
.outofstock a:after {
  content: " ";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background: rgba(0, 0, 0, .6);
  z-index: 10;
}
<ul>
  <li>
    <a href="http://url.com">
      <img width="150" height="150" src="http://placehold.it/150" alt="coelho1" />
      <h3>WITHOUT OVERLAY</h3>
    </a>
  </li>
  <li class="outofstock">
    <a href="http://url.com">
      <img width="150" height="150" src="http://placehold.it/150" alt="coelho1" />
      <h3>OVERLAY</h3>
    </a>
  </li>
</ul>

1) 创建一个DIV放置你的图片,设置left和top css,设置z-index为5,设置width和height与image相同

2) 创建另一个具有相同左、上、宽和高的 DIV,但将 z-index 设置得更高。将缺货的 img 标签放入其中

您可以避免使用图像并使用 CSS 二维变换(甚至 IE9 也支持)

例如http://codepen.io/anon/pen/NPydBP

标记

<ul>
  <li data-in-stock="vendido">
     <a href=""> 
       <img src="http://dummyimage.com/400x280/cccccc/fff.jpg"  />
     </a>
  </li>
</ul>

CSS

li {
  position: relative;
  overflow: hidden;
}

[data-in-stock]:after {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;

  content: attr(data-in-stock);
  display: block;

  min-width: 160px; 
  color: #fff;
  background: #222;
  padding: 6px 10px;

  text-transform: uppercase;
  font: 1em Arial;

  -webkit-transform: rotate(-42deg) translateX(-50px);
  -moz-transform: rotate(-42deg) translateX(-50px);
  transform: rotate(-42deg) translateX(-50px);
}

重叠的文本来自标记中的 data-in-stock 属性,因此您可以轻松更改文本或选择提供不同的页面语言

如果您需要显示图像而不是文本(内容 属性 也接受图像的 url),此方法也适用:参见 http://codepen.io/anon/pen/dPdNBQ


最终结果