如何在多个方向上制作渐变流?

时间:2013-07-06 17:00:22

标签: css css3 svg gradient linear-gradients

我想通过使用渐变来创建一个流光溢彩效果。

在css3中,您可以让渐变从top to bottombottom to topleft to rightright to left移动,您可以使用多种颜色。但只针对一个方向。

我希望通过计算每个区域的平均颜色或主色来组合图像的4个区域,然后使用渐变为图像创建背景。

enter image description here

我考虑过使用多重渐变但是当你创建一个渐变 ac 而另一个 bd 并且只是将它们放在图片后面时它看起来不太好。 (我标记了关键区域。)。

你有什么想法可以做到这一点吗?

编辑:我不想在渐变之间混合颜色,就像在图片中一样。我对所有颜色之间的平滑浮动感到满意。

EDIT2:我在此处上传了一个问题演示:http://jsfiddle.net/HJtnG/

编辑3:我们已经知道这不能用CSS3完成,但可能用SVG。经过一番重新研究后,我发现了这张照片:

enter image description here

所以我会选择像图片上那样的彩色圆圈。

3 个答案:

答案 0 :(得分:2)

在2020年,考虑到新的渐变和蒙版,您将有更多的可能性来实现所需的目标。

使用conic-gradient()

html {
  min-height:100%;
  background:conic-gradient(from 45deg,red,blue,green,yellow,red);
}

enter image description here

使用linear-gradientmask

html {
  min-height:100%;
  background:linear-gradient(to right,red,blue);
}
html::before {
  content:"";
  position:absolute;
  top:0;
  left:0;
  right:0;
  bottom:0;
  background:linear-gradient(to right,green,gold);
  -webkit-mask:linear-gradient(#fff,transparent);
          mask:linear-gradient(#fff,transparent);
}

Multi-color CSS linear gradient

radial-gradientmask一起使用

html {
  background:radial-gradient(120% 120%,red 30%,#000);
}
html:before {
  content:"";
  position:absolute;
  top:0;
  left:0;
  right:0;
  bottom:0;
  background:radial-gradient(120% 120%,blue 30%,#000);
  -webkit-mask:linear-gradient(transparent,#fff);
          mask:linear-gradient(transparent,#fff);
}
.full {
  height:100vh;
  position:relative;
  background:radial-gradient(120% 120%,green 30%,#000);
  -webkit-mask:linear-gradient(to right, transparent,#fff);
          mask:linear-gradient(to right, transparent,#fff);
}
.full:before {
  content:"";
  position:absolute;
  top:0;
  left:0;
  right:0;
  bottom:0;
  background:radial-gradient(120% 120%,gold 30%,#000);
  -webkit-mask:linear-gradient(transparent,#fff);
          mask:linear-gradient(transparent,#fff);
}
body {
  margin:0;
}
<div class="full"></div>

CSS radial-gradient with mask

答案 1 :(得分:0)

你有没有尝试colorzilla免费,你可以用它做很多事情。希望这可以提供帮助。

答案 2 :(得分:0)

如果我不明白这个问题,请原谅我,但我相信你想要的是一个矩形渐变。不幸的是,SVG不支持这一点。你可以得到的最接近的是多个线性渐变,其中一些alpha淡出,而后面则是另一个线性渐变渐入。