字母含义及取值

R:红色。0~255 整数

G:绿色。0~255 整数

B:蓝色。0~255 整数

A:透明度。0~1。整数或者小数

RGB和RGBA的关系

项目遇见一个需求,后台返回所占比例,前端根据比例渐变渲染元素背景色

刚听见这个需求的时候,也没有想到更改透明度,第一反应是根据比例计算R,G,B对应的值。

主色调 R = 96, G = 195, B = 248 (范围为0~255)

所占比例为X

RGB(R*X,G*X,B*X)

实际效果,比例越小,颜色越深

RGB(R*(1-X),G*(1-X),B*(1-X))

那更改一下比例,实际效果,虽然比例小的颜色最浅,可是呈现出按主色调加深的渐变,不符合需求。

一直到这里,自己都没有认真的思考过颜色的渐变到底是怎么实现的,所以暂时放弃了这种方式,选择用RGBA,控制透明度实现渐变

RGBA(R,G,B,A*X)

完美的满足了需求

但是用吸色工具取值,会得到一个对应的RGB值

于是有些执着于找他们的关系

男票是做绘画相关的,我问他时,他这样答,'色盘里面随便选,谁管他们的关系'。成年人的生活,真是怎么简单怎么来。不过他提醒了我一句,用透明度后就和你底层背景色有关系了,就比如背景色是白色的,当前颜色透明度是30%,显示出来的颜色就相当于30%用量30%的主色混合70%的底色。醍醐灌顶呀。默认底色是白色,替换成黑色,果然结果就不一样了。

现在需求是从白色渐变到主色。也就是底色为背景色RGB(255,255,255),可得如下转换关系

RGBA(R,G,B,1*X) X取值0~1
RGB(R*X+255*(1-X),G*X+255*(1-X),B*X+255*(1-X))



完美~

测试代码

html

    <div class="one-box">主色:<span :style="'background:rgb(96,195,248)'"></span></div>
<div class="one-box"><span>RGBA</span><span :style="'background:'+item.color"
v-for="(item,index) of RgbaList"
:key='index'>{{item.percentage}}</span></div>
<div class="one-box"><span>RGB</span><span :style="'background:'+item.color"
v-for="(item,index) of RgbList"
:key='index'>{{item.percentage}}</span></div>
<div class="one-box ">
<div><span style="background: rgba(96, 195, 248, 0.3)">30%</span><span style="width:200px">rgba(96, 195, 248, 0.3)</span></div>
<div><span style="background:rgba(207,237, 253, 1)">30%</span><span style="width:200px">rgba(207,237, 253, 1)</span></div>
</div>
<div class="one-box"><span>RGB</span><span :style="'background:'+item.color"
v-for="(item,index) of RgbTest"
:key='index'>{{item.percentage}}</span></div>

data

      RgbTest: [],
RgbList: [],
RgbaList: []

JS

    let R = 96, G = 195, B = 248, A = 1;
let arr = [1, 4, 3, 0, 2, 4, 5, 3, 8, 10]
let all = 12
arr.forEach(i => {
let count = (i / all) //所占比列
let r = R * count + 255 * (1 - count), g = G * count + 255 * (1 - count), b = B * count + 255 * (1 - count), a = A * count
let rgb = `rgb(${parseInt(r)}, ${parseInt(g)}, ${parseInt(b)})`
let rgba2 = `rgba(${R}, ${G}, ${B}, ${a})`
let rgbTest = `rgb(${parseInt(R * count)}, ${parseInt(G * count)}, ${parseInt(B * count)})`
console.log(rgb, rgba2)
let percentage = parseInt((i / all) * 100) + '%'
this.RgbTest.push({
color: rgbTest,
percentage
})
this.RgbList.push({
color: rgb,
percentage
})
this.RgbaList.push({
color: rgba2,
percentage
})
})

CSS

  .one-box {
width: 100vw;
margin: 40px 0;
display: flex;
align-items: center;
padding-left: 40px;
span {
display: block;
width: 50px;
height: 50px;
border: 1px solid;
margin: 2px;
line-height: 50px;
background: #fff;
text-align: center;
}
}

RGB以及RGBA的更多相关文章

  1. ARGB与RGB、RGBA的区别

    ARGB 是一种色彩模式,也就是RGB色彩模式附加上Alpha(透明度)通道,常见于32位位图的存储结构. RGB 色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变 ...

  2. rgb & rgba convert

    rgb & rgba convert RGB color to Hex, Pantone, RAL, HSL, HSV, HSB, JSON. Get color scheme. https: ...

  3. kivy里rgb,rgba颜色相关知识,以及支持十六进制颜色值方法

    rgb,rgba在kivy里的格式为如下: rgb:1,1,1---->每个参数为0-1的数值(如0.1),也就是说第一位如果是0.1意思是10%的红色,由r代表,g代表绿色,b代表蓝色 rgb ...

  4. CSS3新增Hsl、Hsla、Rgba色彩模式以及透明属性(转)

    CSS2中色彩模式只有RGB色彩模式(RGB即RED.Green.BLue)和十六进制(Hex)模式,为了能支持 透明opacity 的Alpha值,CSS3又增加了RGBA色彩模式(RGBA即RED ...

  5. 关于 CSS 反射倒影的研究思考

    原文地址:https://css-tricks.com/state-css-reflections 译者:nzbin 友情提示:由于演示 demo 的兼容性,推荐火狐浏览.该文章篇幅较长,内容庞杂,有 ...

  6. JavaScript特性(attribute)、属性(property)和样式(style)

    最近在研读一本巨著<JavaScript忍者秘籍>,里面有一篇文章提到了这3个概念. 书中的源码可以在此下载.我将源码放到了线上,如果不想下载,可以直接访问在线网址,修改页面名就能访问到相 ...

  7. CSS知识总结(七)

    CSS常用样式 5.背景样式 1)背景颜色 background-color : transparent | color 常用值:①英文单词,②十六进制,③RGB或RGBA 另外,还有一种是 渐变色彩 ...

  8. CSharpGL(19)用glReadPixels把渲染的内容保存为PNG图片(C#)

    CSharpGL(19)用glReadPixels把渲染的内容保存为PNG图片(C#) 效果图 本文解决了将OpenGL渲染出来的内容保存到PNG图片的方法. 下载 CSharpGL已在GitHub开 ...

  9. 【CSS进阶】CSS 颜色体系详解

    说到 CSS 颜色,相比大家都不会陌生,本文是我个人对 CSS 颜色体系的一个系统总结与学习,分享给大家. 先用一张图直观的感受一下与 CSS 颜色相关大概覆盖了哪些内容. 接下来的行文内容大概会按照 ...

  10. FFmpeg学习2:解码数据结构及函数总结

    在上一篇文章中,对FFmpeg的视频解码过程做了一个总结.由于才接触FFmpeg,还是挺陌生的,这里就解码过程再做一个总结. 本文的总结分为以下两个部分: 数据读取,主要关注在解码过程中所用到的FFm ...

随机推荐

  1. 使用filebeat解析nginx的json格式日志,并且保存原始message字段的值,输出到es中并通过grafana图形化显示

    1.nginx日志调成json样式 log_format json '{"@timestamp":"$time_iso8601",' '"server ...

  2. EFCore分表实现

    实现原理 当我们new一个上下文DbContext 后, 每次执行CURD方式时 ,都会依次调用OnConfiguring(),OnModelCreating()两个方法. OnConfiguring ...

  3. linux安装node和达梦数据库8

    PS.本次测试只是为了项目需要,但是在部署和启动程序的时候发生了一系列的报错,由此记录下来为日后作参考 安装达梦数据库 1. 达梦数据库(DM8)简介 达梦数据库管理系统是武汉达梦公司推出的具有完全自 ...

  4. [题解] Codeforces 1268 D Invertation in Tournament 结论,兰道定理

    题目 本题需要用到的结论: 一.兰道定理 二.如果\(n\geq4\),那么\(n\)个点的强连通竞赛图存在\(n-1\)个点的强连通子图. 证明: 现在有一个n-1个点的竞赛图(不一定强连通,称其为 ...

  5. VScode开发STM32/GD32单片机-MakeFile工程JlinkRTT配置

    本次使用开发板为STM32F401CCU6,使用CubeMX配置一个Makefile工程 配置时候为内部时钟 工程选择makefile工程类型 只生成需要的文件 用VSCode打开后显示很多波浪线 选 ...

  6. BigDecimal 用法总结

    转载请注明出处: 目录 1.BigDecimal 简介 2.构造BigDecimal的对象 3.常用方法总结 4.divide方法使用 5.setScale 方法使用 6.BigDecimal 数据库 ...

  7. 【算法训练营day1】LeetCode704. 二分查找 LeetCode27. 移除元素

    [算法训练营day1]LeetCode704. 二分查找 LeetCode27. 移除元素 LeetCode704. 二分查找 题目链接:704. 二分查找 初次尝试 看到题目标题是二分查找,所以尝试 ...

  8. .net core -利用 BsonDocumentProjectionDefinition 和Lookup 进行 join 关联 MongoDB 查询

    前序 前段时间由于项目需要用到MongoDB,但是MongoDB不建议Collection join  查询,网上很多例子查询都是基于linq 进行关联查询.但是在stackoverflow找到一个例 ...

  9. SQL--Row_Number() over()的使用

    1.语法 --over里面有两个参数 --partition by 用于分割区域 此参数可选 --order by 用于排序 此参数必有 row_number() over(partition by ...

  10. Java基础面试总结

    常见编译型语言:C.C++.Go.Rust 等(执行速度快,但开发效率低) 常见解释型语言:Python.JavaScript.PHP(开发效率高,但执行效率低) 先编译后解释:Java 重载和重写有 ...