图像不透明度从0到1与css

时间:2013-08-27 21:22:57

标签: css image opacity

我希望我的图片如下所示:

图像的底部是透明的,顶部是透明的1。 我可以使用线性渐变颜色来实现此效果:

-webkit-linear-gradient(black, transparent);

但是图像也可以吗?

2 个答案:

答案 0 :(得分:2)

我所知道的最新最酷的方式是使用HTML 5掩码。

它是这样的:

<强> CSS:

.masked
{
    mask: url(#m1); 
}

HTML 5:

<svg width="0" height="0">
  <defs>
    <linearGradient id="gradient" x1="0" y1="0" x2 ="0" y2="100%">
      <stop stop-color="white" offset="0"/>
      <stop stop-color="black" offset="1"/>
    </linearGradient>

    <mask id="masking" maskUnits="objectBoundingBox" maskContentUnits="objectBoundingBox">
      <rect y="0.1" width="1" height="0.9" fill="url(#gradient)" />
    </mask>
  </defs>
</svg>

<svg xmlns="http://www.w3.org/2000/svg"
      xmlns:xlink="http://www.w3.org/1999/xlink" width="500" height="350">
    <image xlink:href="http://upload.wikimedia.org/wikipedia/commons/4/4d/Iss007e10807_darker.jpg"
           width="500" height="350" class="masked"></image>
</svg>

jsFiddle Demo


进一步阅读:

答案 1 :(得分:0)

我尝试使用CSS:)

Codepen示例:http://cdpn.io/hzBav

CSS(使用淡出更新)

figure {
  display: inline-block;
  position: relative;
}

.overlay {
  display: block;
  height: 300px;
  position: absolute;
  width: 300px;

  background-image: -moz-linear-gradient(
  rgba(0, 0, 0, 0.8) 0%, rgba(255, 255, 255, 0) 85%
  );
}

.overlay:after {
  content: '';
  display: block;
  height: 300px;
  width: 300px;

  background-image: -moz-linear-gradient(
  rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 100%
  );
}

<强> HTML

<figure>
  <div class='overlay'></div>
  <img src='http://placekitten.com/300/300' />
</figure>

根据评论进行更新。