在图像后创建 CSS 渐变

发布于 2024-10-11 08:52:52 字数 1081 浏览 2 评论 0原文

我正在构建一个颜色选择器,它在图像上使用 CSS 渐变。我有一个适用于 HSB 颜色选择的 CSS 渐变,但我无法为 HSB 颜色选择创建 CSS 渐变。您可以在以下位置查看原始渐变: http://jsfiddle.net/qVsFN/

渐变 1 应该看​​起来像渐变 2。是否可以这样做只用CSS?我尝试了几种方法,包括径向渐变,但没有成功。

这是我正在使用的 CSS 和标记:

#red_grad {
    background: -moz-linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 0, 0, 1)) repeat scroll 0 0 transparent;
    background: -webkit-gradient(linear, left center, right center, from(rgba(255, 255, 255, 1)), to(rgba(255, 0, 0, 1)));
    height: 262px;
    width: 262px;
}
#black_grad {
    background: -moz-linear-gradient(90deg, rgba(0, 0, 0, 1), transparent) repeat scroll 0 0 transparent;
    background: -webkit-gradient(linear, center bottom, center top, from(rgba(0, 0, 0, 1)), to(transparent)) repeat scroll 0 0 transparent;
    height: 262px;
    width: 262px;
}

<div id="red_grad">
    <div id="black_grad">
    </div>
</div>

您可以在 http://jsfiddle.net/qVsFN/

I am building a color picker that uses CSS gradients instead on images. I have a CSS gradient that works for HSB color selection but I am unable to create a CSS gradient for HSB color selection. You can see the original gradient at:
http://jsfiddle.net/qVsFN/

Gradient 1 should look like gradient 2. Is it possible to do this with only css? I tryed several things including radial gradients with no luck.

Here is the css and markup I am using:

#red_grad {
    background: -moz-linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 0, 0, 1)) repeat scroll 0 0 transparent;
    background: -webkit-gradient(linear, left center, right center, from(rgba(255, 255, 255, 1)), to(rgba(255, 0, 0, 1)));
    height: 262px;
    width: 262px;
}
#black_grad {
    background: -moz-linear-gradient(90deg, rgba(0, 0, 0, 1), transparent) repeat scroll 0 0 transparent;
    background: -webkit-gradient(linear, center bottom, center top, from(rgba(0, 0, 0, 1)), to(transparent)) repeat scroll 0 0 transparent;
    height: 262px;
    width: 262px;
}

<div id="red_grad">
    <div id="black_grad">
    </div>
</div>

You can see it live at http://jsfiddle.net/qVsFN/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌伤ぢ 2024-10-18 08:52:52

HSL 饱和度-亮度平面可以用 2 个线性渐变来制作:

  1. 亮度:白色到透明到黑色(水平渐变)
  2. 饱和度:完全饱和的颜色到灰色 (#808080)(垂直渐变)

这是一个摆弄它: http://jsfiddle.net/leaverou/qVsFN/3/

注意:

  • 您在第一个让您感到困惑的是,您认为每个渐变只能使用 2 个色标。正如您所看到的,它们比这更灵活:)
  • 为什么亮度渐变使用 4 个颜色停止而不是 3 个?因为透明实际上映射到 rgba(0,0,0,0),所以透明到白色的渐变不是您所期望的。
  • CSS3 中不需要 2 个元素,一张图像中可以有多个背景,所以我删除了多余的元素。 ;)

改变色调怎么样?只需用红色替换新颜色的完全饱和版本(色调=任意,饱和度= 100,亮度= 50)——这就是您的颜色选择器!

The HSL Saturation-Lightness plane can be made with 2 linear gradients:

  1. Lightness: White to transparent to black (the horizontal gradient)
  2. Saturation: Fully saturated color to gray (#808080) (the vertial gradient)

Here's a fiddle with it: http://jsfiddle.net/leaverou/qVsFN/3/

Notes:

  • What you got wrong on the first one and confused you is that you thought you're limited to only 2 color stops per gradient. As you can see, they're more flexible than that :)
  • Why 4 color stops instead of 3 for the Lightness gradient? Because transparent is actually mapped to rgba(0,0,0,0) so a transparent to white gradient is not what you expect.
  • You don't need 2 elements in CSS3, you can have multiple backgrounds in just one image, so I removed the extra element. ;)

And what about changing the hue? Just substitute red for the fully saturated version of the new color (Hue = whatever, sat = 100, lightness = 50) -- and there's your color picker!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文