rgba()和hsla()的区别

在css中我们想实现透明颜色,首先就会想到rgba()和hsla()这2个属性。这篇文章就简单介绍下使用这2种方式来实现半透明边框。

1、使用rgba方式:
border: 10px solid rgba(255,255,255,.5);
说明:rgba分别对应红绿蓝和透明值,其中rgb区间为0(纯黑)至255(纯色)透明度a区间为0(完全透明)至1不透明。

2、使用hsla方式:
background: white;
border: 10px solid hsla(0, 0%, 100%, .5);
background-clip: padding-box;
说明:默认情况下,背景的颜色会延伸至边框下层,在css3中,我们可以通过设置background-clip:padding-box来改变背景的默认行为,达到我们想要的效果。

HSLA(H,S,L,A) 的参数说明:
H:Hue(色调)。0(或360)表示红色,120表示绿色,240表示蓝色,也可取其他数值来指定颜色。取值为:0 - 360
S:Saturation(饱和度)。取值为:0.0% - 100.0%
L:Lightness(亮度)。取值为:0.0% - 100.0%
A:Alpha透明度。取值0~1之间。
注:此色彩模式与HSL相同,只是在HSL模式上新增了Alpha透明度

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是将 osg::Vec4f 类型的颜色从 hsla 转换为 rgba 的代码示例: ```cpp osg::Vec4f hslaColor(0.3f, 0.5f, 0.8f, 1.0f); // 定义 hsla 颜色 float h = hslaColor.x() * 360.0f; // 提取 hue 值并转换为角度 float s = hslaColor.y(); float l = hslaColor.z(); float a = hslaColor.w(); float c = (1.0f - std::abs(2.0f * l - 1.0f)) * s; // 计算 chroma 值 float x = c * (1.0f - std::abs(std::fmod(h / 60.0f, 2.0f) - 1.0f)); // 计算 x 值 float m = l - c / 2.0f; // 计算 m 值 float r, g, b; if (h < 60.0f) { r = c; g = x; b = 0.0f; } else if (h < 120.0f) { r = x; g = c; b = 0.0f; } else if (h < 180.0f) { r = 0.0f; g = c; b = x; } else if (h < 240.0f) { r = 0.0f; g = x; b = c; } else if (h < 300.0f) { r = x; g = 0.0f; b = c; } else { r = c; g = 0.0f; b = x; } // 转换为 0-255 范围内的整数 int red = static_cast<int>((r + m) * 255.0f); int green = static_cast<int>((g + m) * 255.0f); int blue = static_cast<int>((b + m) * 255.0f); int alpha = static_cast<int>(a * 255.0f); osg::Vec4f rgbaColor(red / 255.0f, green / 255.0f, blue / 255.0f, alpha / 255.0f); // 构造 rgba 颜色 ``` 其中,hslaColor 表示输入的 hsla 颜色,h、s、l 和 a 分别表示 hue、saturation、lightness 和 alpha 值。我们首先将 hue 值转换为角度,然后根据公式计算 chroma 值、x 值和 m 值,接着根据 hue 值将 r、g、b 值赋值。最后,将 r、g、b 和 a 值转换为 0-255 范围内的整数,并构造成 osg::Vec4f 类型的 rgba 颜色返回即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值