获取渐变色的中间色值

10 篇文章 0 订阅
10 篇文章 0 订阅

更多文章可关注我的个人博客:https://seven777777.github.io/myblog/

需求场景:一个进度条渐变色块,使用标签表明当前进度,标签背景色要与当前位置色值统一。

思路:

根据渐变的两个色值,计算得到两个色值中间100个色值列表,根据百分比,取对应的色值。

代码:

//css
.gradientDiv{
	width: 300px;
	height: 10px;
	background: linear-gradient(90deg,#FAD961,#F76B1C);
	position: relative;
	margin-top: 40px;
}
.label{
	position: absolute;
	bottom: calc(100% + 3px);
	transform: translateX(-50%);
	padding: 0 5px;
	height: 16px;
	border-radius: 8px;
	font-size: 12px;
	color: white;
	line-height: 16px;
	text-align: center;
}
.label:after{
	content: '';
	width: 0;
	height: 0;
	border: 3px solid transparent;
	border-top-color: wheat;
	position: absolute;
	top: 100%;
	left: 50%;
	transform: translateX(-50%);
}
<!--html-->
<div class="gradientDiv">
	<div class="label" style="left:10%">10%</div>
</div>
<div class="gradientDiv">
	<div class="label" style="left:50%">50%</div>
</div>
<div class="gradientDiv">
	<div class="label" style="left:90%">90%</div>
</div>
//js
let color1 = '#FAD961',color2 = '#F76B1C';
function rgbToHex(r, g, b){
	var hex = ((r<<16) | (g<<8) | b).toString(16);
	return "#" + new Array(Math.abs(hex.length-7)).join("0") + hex;
}
function hexToRgb(hex){
	var rgb = [];
	for(var i=1; i<7; i+=2){
		rgb.push(parseInt("0x" + hex.slice(i,i+2)));
	}
	return rgb;
}
/**
 * 计算渐变过渡色
 * @param {*} startColor 
 * @param {*} endColor 
 * @param {*} step 
 */
function gradient (startColor,endColor,step){
	// 将 hex 转换为rgb
	var sColor = this.hexToRgb(startColor),
		eColor = this.hexToRgb(endColor);

	// 计算R\G\B每一步的差值
	var rStep = (eColor[0] - sColor[0]) / step,
		gStep = (eColor[1] - sColor[1]) / step,
		bStep = (eColor[2] - sColor[2]) / step;

	var gradientColorArr = [];
	for(var i=0;i<step;i++){
		// 计算每一步的hex值
		gradientColorArr.push(this.rgbToHex(parseInt(rStep*i+sColor[0]),parseInt(gStep*i+sColor[1]),parseInt(bStep*i+sColor[2])));
	}
	return gradientColorArr;
}

let colorList = gradient(color1,color2,100)

let labels = document.getElementsByClassName('label')
labels[0].style.backgroundColor = colorList[10]
labels[1].style.backgroundColor = colorList[50]
labels[2].style.backgroundColor = colorList[90]

详细demo:https://github.com/seven777777/blog-demo/blob/master/colorGradient.html

搴芳拾梦
欢迎关注的我的个人公众号【搴芳拾梦】
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Python中获取渐变色,可以使用以下代码: ```python import numpy as np def Gradient_color(start_color, end_color, colornums): ''' start_color:初始颜色代码(不要带#) end_color:结尾颜色代码(不要带#) colornums:颜色个数 return:colornums个渐变颜色代码 ''' return \['#%06x'% int(i) for i in np.linspace(int(start_color, 16), int(end_color, 16), colornums)\] ``` 这个函数接受初始颜色代码和结尾颜色代码,以及要生成的颜色个数。它使用numpy库中的linspace函数来生成一个从初始颜色到结尾颜色的渐变色序列,并将每个颜色代码转换为十六进制格式返回。 例如,如果你想要生成8个渐变色,可以使用以下代码: ```python start_color = "#40FAFF" end_color = "#FF64FF" colornums = 8 gradient_colors = Gradient_color(start_color, end_color, colornums) print(gradient_colors) ``` 这将输出一个包含8个渐变色代码的列表。 #### 引用[.reference_title] - *1* [python 渐变颜色代码的生成](https://blog.csdn.net/yryryrkkx/article/details/129898840)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python生成渐变色](https://blog.csdn.net/weixin_39569112/article/details/110024826)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值