首页 > web前端 > js教程 > 正文

js实现获取颜色渐变代码

小云云
发布: 2018-03-02 15:24:34
原创
2651人浏览过

html中颜色可以使用rgb和hex方式来表示。在色彩中,色相、明度、纯度也都可以产生渐变效果,并会表现出具有丰富层次的美感。本文主要讲述两种颜色RGB数值的梯级渐变算法。

其中如如16进制颜色如#336600分别表示rgb模式中r的值为16进制33(即),g的值为16进制的66,和b为16进制的00,转换后用rgb完整表述为:rgb(51,102,0)。

其中使用16进制进行加减乘除不方便,尤其还使用了rgb的16进制颜色组合(#336600)。因此我们可以将16进制转换为rgb单个进行梯级运算在进行组合。

已知:RStart=50,REnd=200,RStart、REnd之间平均分成3份(Step=3),求每份的数值(StepN)分别是多少。

公式:Gradient = RStart+ (REnd-RStart) / Step * N (第N步的颜色rgb中R的值)

实现方法非常简单,只是需要将颜色从rgb到hex的互转。

实现代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

<br>

<script type="text/javascript">

 /*

 // 作者 yanue

 // 参数:

 // startColor:开始颜色hex

 // endColor:结束颜色hex

 // step:几个阶级(几步)

 */

 function gradientColor(startColor,endColor,step){

  startRGB = this.colorRgb(startColor);//转换为rgb数组模式

  startR = startRGB[0];

  startG = startRGB[1];

  startB = startRGB[2];

  endRGB = this.colorRgb(endColor);

  endR = endRGB[0];

  endG = endRGB[1];

  endB = endRGB[2];

  sR = (endR-startR)/step;//总差值

  sG = (endG-startG)/step;

  sB = (endB-startB)/step;

  var colorArr = [];

  for(var i=0;i<step;i++){

  //计算每一步的hex值

   var hex = this.colorHex('rgb('+parseInt((sR*i+startR))+','+parseInt((sG*i+startG))+','+parseInt((sB*i+startB))+')');

   colorArr.push(hex);

  }

  return colorArr;

 }

 // 将hex表示方式转换为rgb表示方式(这里返回rgb数组模式)

 gradientColor.prototype.colorRgb = function(sColor){

  var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;

  var sColor = sColor.toLowerCase();

  if(sColor && reg.test(sColor)){

   if(sColor.length === 4){

    var sColorNew = "#";

    for(var i=1; i<4; i+=1){

     sColorNew += sColor.slice(i,i+1).concat(sColor.slice(i,i+1));

    }

    sColor = sColorNew;

   }

   //处理六位的颜色值

   var sColorChange = [];

   for(var i=1; i<7; i+=2){

    sColorChange.push(parseInt("0x"+sColor.slice(i,i+2)));

   }

   return sColorChange;

  }else{

   return sColor;

  }

 };

 // 将rgb表示方式转换为hex表示方式

 gradientColor.prototype.colorHex = function(rgb){

  var _this = rgb;

  var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;

  if(/^(rgb|RGB)/.test(_this)){

   var aColor = _this.replace(/(?:(|)|rgb|RGB)*/g,"").split(",");

   var strHex = "#";

   for(var i=0; i<aColor.length; i++){

    var hex = Number(aColor[i]).toString(16);

    hex = hex<10 ? 0+''+hex :hex;// 保证每个rgb的值为2位

    if(hex === "0"){

     hex += hex;

    }

    strHex += hex;

   }

   if(strHex.length !== 7){

    strHex = _this;

   }

   return strHex;

  }else if(reg.test(_this)){

   var aNum = _this.replace(/#/,"").split("");

   if(aNum.length === 6){

    return _this;

   }else if(aNum.length === 3){

    var numHex = "#";

    for(var i=0; i<aNum.length; i+=1){

     numHex += (aNum[i]+aNum[i]);

    }

    return numHex;

   }

  }else{

   return _this;

  }

 }

 var gradient = new gradientColor('#013548','#554851',10);

 console.log(gradient);//控制台输出

 alert(gradient);

</script>

<br>

相关推荐:      

css如何实现文字颜色渐变的实例

javascript实现按钮颜色渐变效果的实例讲解

JavaScript实现的鼠标响应颜色渐变效果完整实例

代码小浣熊
代码小浣熊

代码小浣熊是基于商汤大语言模型的软件智能研发助手,覆盖软件需求分析、架构设计、代码编写、软件测试等环节

代码小浣熊 51
查看详情 代码小浣熊

以上就是js实现获取颜色渐变代码的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号