22

我知道这可以在任何图像编辑程序中轻松完成,我只是好奇是否有一种仅使用 css 的方法。

例子:

body {background-color: #837960; background-image: url("Images/background.jpg") background-repeat: no-repeat;}

您可以使用 css 将背景图像淡化为背景颜色,因此不存在可见线,还是我应该继续在 Photoshop 中为透明度添加渐变?

4

3 回答 3

12

有可能 - 在 CSS3 中,您可以为背景设置多个值

body {
    background: #837960 url("https://i.stack.imgur.com/MUsp6.jpg") 0 0 no-repeat;

    background: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(130,91,0,1) 100%);   /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0)), color-stop(100%,rgba(130,91,0,1))); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(130,91,0,1) 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(130,91,0,1) 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(130,91,0,1) 100%); /* IE10+ */
    background: linear-gradient(to bottom, rgba(255,255,255,0) 0%,rgba(130,91,0,1) 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#825b00',GradientType=0 ); /* IE6-9 */
}

但是,它只适用于支持 CSS3 的现代浏览器

(通过http://www.colorzilla.com/gradient-editor/生成的代码)

于 2013-04-04T14:47:41.037 回答
6

是的,可以通过 CSS 使用linear-gradient()具有多个背景图像的功能:

body {
  background-color: #837960;
  background-image: linear-gradient(
    to bottom, transparent, #837960
  ), url("Images/background.jpg");
  background-repeat: no-repeat;
}

将渐变指定为第一个图像,使其堆叠在顶部,并使用它从transparent顶部淡入淡出background-color到底部不透明。这将产生下面的图像淡入背景的错觉,而不需要图像本身的 alpha 透明度。

于 2019-01-06T06:58:43.160 回答
2

理想情况下,您应该只编辑图像,以便在浏览器中具有一致的外观。

虽然您可以有一个背景渐变,但它会出现在图像后面,因为背景图像被放置在背景颜色之上。为了使图像看起来像是淡出另一种颜色,您需要在主体顶部放置另一个标签,例如:

body { background: url('https://i.stack.imgur.com/MUsp6.jpg') }
div.content { 
    width: 100%; 
    height: 100%; 
    background: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0)), color-stop(100%,rgba(255,255,255,1))); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 100%); /* IE10+ */
    background: linear-gradient(to bottom, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=0 ); /* IE6-9 */
}
<body>
    <div class="content">Example</div>
</body>

或者您想要的任何颜色/定位组合。一个很好的资源是http://www.colorzilla.com/gradient-editor/

于 2013-04-04T14:52:32.960 回答