如何让CSS渐变看起来平滑?

How to make CSS gradient look smooth?

我有一个黑色背景,想在里面添加一个块,里面有从透明到 0.7 白色的简单 CSS 渐变:

linear-gradient(to right, 
    hsla(0, 0%, 100%, 0), 
    hsla(0, 0%, 100%, 0.76) 14%, 
    hsla(0, 0%, 100%, 0.76)
)

但这看起来很糟糕:

我找到的唯一方法是手动添加额外的色标。

background: linear-gradient(
    to right,
    hsla(0, 0%, 100%, 0),
    hsla(0, 0%, 100%, 0.05) 2%,
    hsla(0, 0%, 100%, 0.09) 3%,
    hsla(0, 0%, 100%, 0.2) 5%,
    hsla(0, 0%, 100%, 0.57) 11.5%,
    hsla(0, 0%, 100%, 0.69) 14%,
    hsla(0, 0%, 100%, 0.75) 16.5%,
    hsla(0, 0%, 100%, 0.76) 17.5%,
    hsla(0, 0%, 100%, 0.77)
);

看起来好多了:

The comparsion demonstration on CodePen

有没有更简单的方法可以使 CSS 色标上的渐变平滑?

我还不完全明白你打算做什么,但据我所知,你想在黑色背景上添加一个框,左侧从透明渐变(所以仍然是黑色)到具有 0.7 透明度或#C2C2C2 的白色。如果那是您想做的,我不会使用 hsl(因为基本的颜色理论),而是使用 rgba。

看看这个:

<html>
<head>
<style>
#blackbg {
background-color: black;
height: 300px;
}

#grad1 {
    height: 200px;
    background: linear-gradient(to right, rgba(255,0,0,0), rgba(255, 255, 255, 0.7)); 
}
</style>
</head>
<body>

如果这不是您想要做的,或者您仍然觉得有什么问题,请随时回复我。

<div id="blackbg">
<div id="grad1"></div>
</div>

</body>
</html>

有一天,我希望,我们有这个:

linear-gradient(
  to top,
  hsla(330, 100%, 45%, 0),
  cubic-bezier(0.45, 0, 0.5, 0.5),
  hsla(330, 100%, 45%, 1)
);

现在,我们有这个机器人: