平滑的CSS渐变

时间:2012-10-31 04:35:04

标签: css css3 css-gradients

我正在学习如何使用CSS渐变。

我的问题是从上到下的渐变。您可以在变色中看到“停止”。

enter image description here

这是我的CSS代码

#header { 
   width:1000px; 
   height:250px; 
   background:-moz-linear-gradient(top, #BF7A30 30%, #EDD599); 
   background:-webkit-linear-gradient(top, #BF7A30 30%, #EDD599); 
}

有没有办法在上下渐变中消除停止? (就我而言,从左到右或从右到左渐变不是很明显)

5 个答案:

答案 0 :(得分:4)

这是我最喜欢的制作渐变的工具。我特别喜欢它输出SASS / SCSS语法。

http://www.colorzilla.com/gradient-editor/

答案 1 :(得分:2)

思考以下css将满足您的需求。

CSS:

#header {
    width:1000px;
    height:250px;
    /* IE10 Consumer Preview */ 
background-image: -ms-linear-gradient(bottom, #EDD799 0%, #BF7F37 100%);
    /* Mozilla Firefox */ 
background-image: -moz-linear-gradient(bottom, #EDD799 0%, #BF7F37 100%);
    /* Opera */ 
background-image: -o-linear-gradient(bottom, #EDD799 0%, #BF7F37 100%);
    /* Webkit (Safari/Chrome 10) */ 
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #EDD799), color-stop(1, #BF7F37));
    /* Webkit (Chrome 11+) */ 
background-image: -webkit-linear-gradient(bottom, #EDD799 0%, #BF7F37 100%);
    /* W3C Markup, IE10 Release Preview */ 
background-image: linear-gradient(to top, #EDD799 0%, #BF7F37 100%);
}

http://jsfiddle.net/xPLPH/

了解有关线性渐变的更多信息 https://developer.mozilla.org/en-US/docs/CSS/linear-gradient

答案 2 :(得分:1)

这种弯曲效果的主要原因实际上是颜色的线性混合,这对人眼来说不太和谐。

Andreas Larsen 在 css-tricks.com (2017) 上写了一篇非常详尽的文章。 https://css-tricks.com/easing-linear-gradients/

它通过定义近似回旋曲线的多个色标来描述非线性渐变的概念。

会导致这样的结果(.gradient-clothoid):

.gradient-wrp {
  display: flex;
}

.header {
  width: 100%;
  height: 250px;
  flex: 0 0 none;
}

.gradient-linear {
  background-image: linear-gradient(#bf7a30 30%, #edd599);
}

.gradient-smooth {
  background-image: linear-gradient(#bf7a30 25%, 75%, #edd599);
}

.gradient-clothoid {
  background-image: linear-gradient(
    rgba(191, 122, 48, 1) 0%,
    rgba(191, 122, 48, 0.3) 50%,
    rgba(191, 122, 48, 0.15) 65%,
    rgba(191, 122, 48, 0.075) 75.5%,
    rgba(191, 122, 48, 0.037) 82.85%,
    rgba(191, 122, 48, 0.019) 88%,
    rgba(191, 122, 48, 0) 100%
  );
}
<div class="gradient-wrp">
  <div class="header gradient-linear"></div>
  <div class="header gradient-smooth"></div>
  <div class="header gradient-clothoid"></div>
</div>

这个概念也被称为“scrim”。

恕我直言,不太适合像原始示例那样“开始”颜色停止:

  • 渐变的前 30% 应具有 100% 的颜色强度。可能是为了确保标题的文本可读性更好
  • 剩下的 70% 应该具有平滑的颜色过渡。

我实际上更喜欢 Amelia Bellamy-Royds 的建议(下面评论中的文章)使用(得到很好支持的)渐变平滑,通过添加没有颜色定义的停止,如下所示:

.gradient-smooth{
   background-image:linear-gradient(#BF7A30 25%, 75%, #EDD599); 
}

这会将 25% 和 75% 之间的梯度平滑到基于底部样条线而非线性。

.gradient-linear{
   background-image:linear-gradient(#BF7A30 30%, #EDD599); 
 }

答案 3 :(得分:1)

正如@nighthawk2534 所提到的,向渐变添加更多颜色是可行的方法。显然,这些必须是“正确”的颜色。

我不太了解色彩理论,但偶然发现了一个很好的工具: https://mycolor.space/gradient

对于您的示例,它给出了:

background-image: linear-gradient(to right top, #bf7a30, #ca9148, #d5a861, #e1bf7d, #edd599);

看起来像这样: image

(我知道这个帖子很老了,但还是有帮助的)

答案 4 :(得分:-1)

检查一下:

background-color: #bf7a30;
background-image: linear-gradient(0deg, #bf7a30 0%, #edd599 46%, #bf7a30 100%);

我从www.gradientcss.com

真正轻松地生成了它