线性淡出div,内容和边框(顶部为实心,底部为透明)

时间:2012-10-08 10:23:13

标签: css css3 transparency

  

可能重复:
  Is it possible to graduate the opacity of an HTML element?

我正在尝试使用css将div(及其边框和内容)淡入透明度(即顶部为实心,底部为透明)。

有办法做到这一点吗?

我已经能够通过以下方式消除背景:

.fade-to-nothing
{
    background-image: -moz-linear-gradient(top, rgba(255,255,255,1), rgba(255,255,255,0));
    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(255,255,255,1)), to(rgba(255,255,255,0)));
    background-image: -webkit-linear-gradient(top, rgba(255,255,255,1), rgba(255,255,255,0));
    background-image: -o-linear-gradient(top, rgba(255,255,255,1), rgba(255,255,255,0));
    background-image: linear-gradient(to bottom, rgba(255,255,255,1),rgba(255,255,255,0));
    background-repeat: repeat-x;
}

但是也无法找到对div的内容/边框执行此操作的方法。也许有某种嵌套或叠加?

修改 继承人我想做的事情:

enter image description here

2 个答案:

答案 0 :(得分:22)

引自my answer here

选中此working demo,然后尝试添加/删除#contents

中的内容

HTML

<div id="container">
    <div id="contents">
        Some contents goes here
    </div>
    <div id="gradient">
    </div>
</div>

CSS

#container {
    position:relative;
}
#contents {
    background:red;
}
#gradient {
    position:absolute;
    z-index:2;
    right:0; bottom:0; left:0;
    height:200px; /* adjust it to your needs */
    background: url(data:image/svg+xml;base64,alotofcodehere);
    background: -moz-linear-gradient(top,  rgba(255,255,255,0) 0%, rgba(255,255,255,1) 70%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0)), color-stop(70%,rgba(255,255,255,1)));
    background: -webkit-linear-gradient(top,  rgba(255,255,255,0) 0%,rgba(255,255,255,1) 70%);
    background: -o-linear-gradient(top,  rgba(255,255,255,0) 0%,rgba(255,255,255,1) 70%);
    background: -ms-linear-gradient(top,  rgba(255,255,255,0) 0%,rgba(255,255,255,1) 70%);
    background: linear-gradient(to bottom,  rgba(255,255,255,0) 0%,rgba(255,255,255,1) 70%);
}​

这几乎可以在任何支持不透明度的浏览器中运行(包括IE9),这里是IE8“rgba”后备(未经测试):

filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=0 );

要生成自己的渐变,请访问Colorzilla

第一站(0%)必须具有不透明度0(rgba(255,255,255,0);),然后大约70% - 做一些测试以找到对你有用的东西 - 添加另一个不透明度1的停留点(rgba(255,255,255,1);

答案 1 :(得分:1)

如果你知道你可以利用这些知识的高度,你可以随时从js更新它,但这似乎比定义无数渐变http://jsfiddle.net/6cXRZ/4/更简单你可以调整你的参数来隐藏无论你喜欢多少