如何结合两个css3渐变?

Paw*_*ude 4 css gradient linear-gradients css3

我有两个用于HTML BODY背景的CSS我正在使用这个CSS作为我的页面的背景; 我想重叠这两个并获得综合效果?

    /* IE10 Consumer Preview */ 
background-image: -ms-linear-gradient(top, #FFFFFF 0%, #FFFFFF 50%, #FFFFFF 75%, #A3EF69 100%);

/* Mozilla Firefox */ 
background-image: -moz-linear-gradient(top, #FFFFFF 0%, #FFFFFF 50%, #FFFFFF 75%, #A3EF69 100%);

/* Opera */ 
background-image: -o-linear-gradient(top, #FFFFFF 0%, #FFFFFF 50%, #FFFFFF 75%, #A3EF69 100%);

/* Webkit (Safari/Chrome 10) */ 
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #FFFFFF), color-stop(0.5, #FFFFFF), color-stop(0.75, #FFFFFF), color-stop(1, #A3EF69));

/* Webkit (Chrome 11+) */ 
background-image: -webkit-linear-gradient(top, #FFFFFF 0%, #FFFFFF 50%, #FFFFFF 75%, #A3EF69 100%);

/* W3C Markup, IE10 Release Preview */ 
background-image: linear-gradient(to bottom, #FFFFFF 0%, #FFFFFF 50%, #FFFFFF 75%, #A3EF69 100%);
Run Code Online (Sandbox Code Playgroud)

第二个是

/* IE10 Consumer Preview */ 
background-image: -ms-linear-gradient(bottom, #FFFFFF 0%, #FFFFFF 50%, #FFFFFF 75%, #A3EF69 100%);

/* Mozilla Firefox */ 
background-image: -moz-linear-gradient(bottom, #FFFFFF 0%, #FFFFFF 50%, #FFFFFF 75%, #A3EF69 100%);

/* Opera */ 
background-image: -o-linear-gradient(bottom, #FFFFFF 0%, #FFFFFF 50%, #FFFFFF 75%, #A3EF69 100%);

/* Webkit (Safari/Chrome 10) */ 
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #FFFFFF), color-stop(0.5, #FFFFFF), color-stop(0.75, #FFFFFF), color-stop(1, #A3EF69));

/* Webkit (Chrome 11+) */ 
background-image: -webkit-linear-gradient(bottom, #FFFFFF 0%, #FFFFFF 50%, #FFFFFF 75%, #A3EF69 100%);

/* W3C Markup, IE10 Release Preview */ 
background-image: linear-gradient(to top, #FFFFFF 0%, #FFFFFF 50%, #FFFFFF 75%, #A3EF69 100%);
Run Code Online (Sandbox Code Playgroud)

我如何将这两者合二为一?

Sco*_*ttS 8

您的代码有两个问题

首先,必须在一次background-image调用中调用两个图像,否则CSS的"级联"部分的工作方式将仅覆盖第一个.所以需要改变的第一件事就是让所有的调用都像这样分组(每个连续的调用用逗号分隔):

background-image: 
  linear-gradient(top, #FFFFFF 0%, #FFFFFF 50%, #FFFFFF 75%, #A3EF69 100%), 
  linear-gradient(bottom, #FFFFFF 0%, #FFFFFF 50%, #FFFFFF 75%, #A3EF69 100%);
Run Code Online (Sandbox Code Playgroud)

这是可能重复的问题,这是正确的,但它可能不适合你,因为......

其次,您定义的每个渐变图像都是不透明的,因此其中一个将在另一个上面"过度绘制"并有效地为您提供一个图像.我认为你真正想要的是淡入淡出效果,这需要你使用alpha不透明度来实现.所以每一个#FFFFFF需要改变的例子rgba(255, 255, 255, 0),然后你得到我相信你寻求的混合:

background-image: 
  linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 50%,
    rgba(255, 255, 255, 0) 75%, #A3EF69 100%), 
  linear-gradient(bottom, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 50%, 
    rgba(255, 255, 255, 0) 75%, #A3EF69 100%);
Run Code Online (Sandbox Code Playgroud)

  • **其他人注意:** 这让我很困惑,因为我的不起作用。真正让我困惑的是**绘制顺序与我的预期相反**:我想要在*之上*另一个绘制的渐变需要在线性渐变列表中**第一个**出现。我的完全不透明渐变需要**最后**。我错误地认为它们会按照列出的顺序呈现。这是不正确的,它们似乎是以**相反**顺序呈现的。 (4认同)