博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js 改变颜色值
阅读量:4654 次
发布时间:2019-06-09

本文共 1926 字,大约阅读时间需要 6 分钟。

/** * 获取颜色值 */const color2RGB = (color) => {  if (typeof color !== 'string' || (color.length !== 7 && color.length !== 4)) return [0, 0, 0];  color = color.substr(1);  if (color.length === 3) {    return color.split('').map(str => parseInt(str + str, 16));  }  let result = [];  for (let i = 0; i < 6; i += 2) {    result.push(parseInt(color.substr(i, 2), 16));  }  return result;} /** * 加深:correctionFactor<0   变亮:correctionFactor>0   -1.0f <= correctionFactor <= 1.0f   @colorStr  颜色值:#ff0000 */const changeColor = (colorStr, correctionFactor) => {  let color = color2RGB(colorStr)  let red = parseFloat(color[0]);  let green = parseFloat(color[1]);  let blue = parseFloat(color[2]);  if (correctionFactor < 0) {    correctionFactor = 1 + correctionFactor;    red *= correctionFactor;    green *= correctionFactor;    blue *= correctionFactor;  }  else {    red = (255 - red) * correctionFactor + red;    green = (255 - green) * correctionFactor + green;    blue = (255 - blue) * correctionFactor + blue;  }  if (red < 0) red = 0;  if (red > 255) red = 255;  if (green < 0) green = 0;  if (green > 255) green = 255;  if (blue < 0) blue = 0;  if (blue > 255) blue = 255;  red = parseInt(red);  green = parseInt(green);  blue = parseInt(blue)   return [red, green, blue];}

 

第一种方式:

  使用rgba()对颜色进行透明度调整, 例如:rgba(0,0,0,0.5)

     let color = `rgba(${color2RGB('#FF0000').join(',')},0.1)`;

 

第二种方式:

  使用changeColor方法来计算颜色的加深、变浅度

       let color =`rgb(changeColor('#FF0000', -0.4).join(',')},0.1)`; 

 

第三种方式:

  使用背景色重叠来实现加深效果

       

.aa {
width: 200px; height: 200px; background-color: #ff0000; position: relative; } .btn {
width: 80px; height: 80px; background-color: rgb(0, 0, 0, 0.2); border-radius: 5px; position: absolute; top: 20px; left: 20px; }   
    
我是浮层按钮
  

 

 

转载于:https://www.cnblogs.com/wind-wang/p/10045026.html

你可能感兴趣的文章
2.写一个函数,将小写字母转为大写
查看>>
LeetCode8.字符串转换整数(atoi) JavaScript
查看>>
刷面经笔记2019.02.07
查看>>
HDU3790最短路径问题
查看>>
R掷硬币500次,出现真面朝上的概率
查看>>
滤霸投票
查看>>
mysql 示例数据库安装
查看>>
linux物理网卡检测命令mii-tool
查看>>
XDroidMvp 轻量级的Android MVP快速开发框架
查看>>
Android 禁止软键盘自动弹出
查看>>
android 为TextView添加边框
查看>>
android PopupWindow显示位置
查看>>
object.prototype.toString()判断类型
查看>>
单例模式中的饿汉模式
查看>>
在 overlay 中运行容器 - 每天5分钟玩转 Docker 容器技术(51)
查看>>
HTML5的PLACEHOLDER属性
查看>>
在Ubuntu下安装OpenJDK的方法
查看>>
十一、条件查询
查看>>
文本操做小结
查看>>
OD使用教程17 - 调试篇17
查看>>