是否可以使用css使背景图像"淡化"或将底部渐变为透明,以便显示背景颜色?

Chr*_*69x 16 css

我知道这可以很容易地在任何图像编辑程序中完成,我只是好奇,如果有一种方法只是使用CSS.

例:

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

您可以使用css将背景图像淡入背景颜色,这样就不存在可见线条,或者我应该在Photoshop中为透明度添加渐变吗?

Lem*_*urr 11

有可能 - 在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 */
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • 这段代码不起作用.您必须在相同的背景属性中使用逗号设置多个值,如下所示:`background:url("images/img.jpg"),linear-gradient(to top,red,green)`. (2认同)

Jos*_*das 10

是的,CSS 可以使用linear-gradient()具有多个背景图像的函数:

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

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