我正在学习如何使用CSS渐变。
我的问题是从上到下的渐变。您可以在变色中看到“停止”。
这是我的CSS代码
#header {
width:1000px;
height:250px;
background:-moz-linear-gradient(top, #BF7A30 30%, #EDD599);
background:-webkit-linear-gradient(top, #BF7A30 30%, #EDD599);
}
有没有办法在上下渐变中消除停止? (就我而言,从左到右或从右到左渐变不是很明显)
答案 0 :(得分:4)
这是我最喜欢的制作渐变的工具。我特别喜欢它输出SASS / SCSS语法。
答案 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%);
}
了解有关线性渐变的更多信息 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”。
恕我直言,不太适合像原始示例那样“开始”颜色停止:
我实际上更喜欢 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%);
真正轻松地生成了它