亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS實現隨機顏色的3種方法與顏色格式的轉化

2019-11-19 18:07:39
字體:
來源:轉載
供稿:網友

前言

相信大家都知道在前端的顏色表示方式有多種,一種是以3個或6個十六進制的數子表示,一種是RGB的數字形式,還有一種是直接以顏色的英文來表示。這三種都是不支持透明色的。所以還有RGBA的表式方式,在RGB的的基礎上加入了Alpha透明,使網頁可以展現更加復雜絢麗的效果。

隨機顏色

在平時的碼農日常中,經常會用到求隨機顏色的地方,下面是我總結的幾種簡單的實現隨機顏色的方式:

十六進制格式(#000000-#FFFFFF)

第一種是比較簡單的方法,這種方法是先隨機生成ffffff以內16進制數,然后判斷位數,少于6位的用while循環在前面加0,湊夠6位。

function randomHexColor() { //隨機生成十六進制顏色 var hex = Math.floor(Math.random() * 16777216).toString(16); //生成ffffff以內16進制數 while (hex.length < 6) { //while循環判斷hex位數,少于6位前面加0湊夠6位  hex = '0' + hex; } return '#' + hex; //返回‘#'開頭16進制顏色}

還有一種比較方便但是比較難懂的方法,需要用到位運算。

function randomHexColor() { //隨機生成十六進制顏色 return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);}

按執行順序可以分為以下六步:

  1. 先執行Math.random() * 0x1000000,其中0x1000000=0xffffff+1,因為Math.random()取不到1,所以+1,這樣就會生成一個1-16777216(不包含)以內的浮點數。
  2. 然后執行<<0,這是取整運算,去掉后面的小數點。這時為一個16777216(不包含)以內的十進制數。
  3. 之后執行.toString(16) ,把十進制數轉化為六位以下16進制數。
  4. 再后執行'00000'+,這時因為之前生成的16進制數最少可能僅一位,在前面加上5個0。
  5. 最后執行.substr(-6) ,是去從-6開始的后面所有字符串,也就是最后6位數。
  6. 前面加上#并retuen。

RGB格式

function randomRgbColor() { //隨機生成RGB顏色 var r = Math.floor(Math.random() * 256); //隨機生成256以內r值 var g = Math.floor(Math.random() * 256); //隨機生成256以內g值 var b = Math.floor(Math.random() * 256); //隨機生成256以內b值 return `rgb(${r},${g},$)`; //返回rgb(r,g,b)格式顏色}

RGBA格式

function randomRgbaColor() { //隨機生成RGBA顏色 var r = Math.floor(Math.random() * 256); //隨機生成256以內r值 var g = Math.floor(Math.random() * 256); //隨機生成256以內g值 var b = Math.floor(Math.random() * 256); //隨機生成256以內b值 var alpha = Math.random(); //隨機生成1以內a值 return `rgb(${r},${g},$,${alpha})`; //返回rgba(r,g,b,a)格式顏色}

顏色格式轉化

在編碼過程中,經常會遇到要將顏色格式相互轉化的問題,其中十六進制格式和RGB格式是可以相互轉化的,但是RGBA格式由于多了前兩者沒有的Alpha透明屬性,所以和前兩者轉化會丟失Alpha值,不建議進行轉化,下面是我的顏色轉化的方法:

十六進制轉為RGB

function hex2Rgb(hex) { //十六進制轉為RGB var rgb = []; // 定義rgb數組 if (/^/#[0-9A-F]{3}$/i.test(hex)) { //判斷傳入是否為#三位十六進制數  let sixHex = '#';  hex.replace(/[0-9A-F]/ig, function(kw) {   sixHex += kw + kw; //把三位16進制數轉化為六位  });  hex = sixHex; //保存回hex } if (/^#[0-9A-F]{6}$/i.test(hex)) { //判斷傳入是否為#六位十六進制數  hex.replace(/[0-9A-F]{2}/ig, function(kw) {   rgb.push(eval('0x' + kw)); //十六進制轉化為十進制并存如數組  });  return `rgb(${rgb.join(',')})`; //輸出RGB格式顏色 } else {  console.log(`Input ${hex} is wrong!`);  return 'rgb(0,0,0)'; }}

RGB轉為十六進制

function rgb2Hex(rgb) { if (/^rgb/((/d{1,3}/,){2}/d{1,3}/)$/i.test(rgb)) { //test RGB  var hex = '#'; //定義十六進制顏色變量  rgb.replace(//d{1,3}/g, function(kw) { //提取rgb數字   kw = parseInt(kw).toString(16); //轉為十六進制   kw = kw.length < 2 ? 0 + kw : kw; //判斷位數,保證兩位   hex += kw; //拼接  });  return hex; //返回十六進制 } else {  console.log(`Input ${rgb} is wrong!`);  return '#000'; //輸入格式錯誤,返回#000 }}

總結

以上就是這篇文文章的全部內容了,也是我在平時遇到的關于顏色處理方面的問題,大家有遇到什么奇怪的問題和更好的解決方法可以交流溝通一下。希望本文的內容對大家的學習或者工作能帶來一定的幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久久男| 欧美www视频在线观看| 亚洲美女性视频| 国产性猛交xxxx免费看久久| 成人免费xxxxx在线观看| 日韩一区二区欧美| www.99久久热国产日韩欧美.com| 亚洲天堂男人天堂女人天堂| 日韩不卡中文字幕| 91国内揄拍国内精品对白| 久久国产精品久久久久久| 亚洲xxxx妇黄裸体| 国产日韩精品一区二区| 精品久久久久久中文字幕一区奶水| 亚洲欧洲中文天堂| 亚洲成人久久电影| 岛国av一区二区三区| 一二美女精品欧洲| 黄网站色欧美视频| 国内成人精品视频| 色播久久人人爽人人爽人人片视av| 久久视频免费观看| 精品一区电影国产| 日韩欧美极品在线观看| 精品毛片网大全| 成人国产精品一区| 成人激情视频免费在线| 日韩少妇与小伙激情| 亚洲电影av在线| 国产91网红主播在线观看| 日韩精品在线视频观看| 欧美夫妻性视频| 久久久久久久久久久网站| 国产精品扒开腿做| 久久精品久久久久久| 91久久精品国产91性色| 成人有码在线视频| 欧美精品一区二区免费| 欧美午夜女人视频在线| 欧美极品少妇与黑人| 亚洲欧美在线一区| 伊人久久五月天| 亚洲乱码一区二区| 97精品欧美一区二区三区| 91av网站在线播放| 韩国国内大量揄拍精品视频| 日韩动漫免费观看电视剧高清| 国产精品日韩一区| 国产精品爽爽爽爽爽爽在线观看| 久久躁日日躁aaaaxxxx| 欧美成人精品在线视频| 亚洲xxx自由成熟| 亚洲一区二区三区乱码aⅴ| 成人免费看片视频| 国产精品一二三在线| 欧美日韩精品二区| 欧美洲成人男女午夜视频| 日韩在线观看免费网站| xx视频.9999.com| 欧美视频国产精品| 久久久精品在线| 国产精品人人做人人爽| 美女国内精品自产拍在线播放| 日韩av123| 国产男女猛烈无遮挡91| 亚洲娇小xxxx欧美娇小| 97在线日本国产| 亚洲激情视频在线播放| 97在线看免费观看视频在线观看| 日韩欧美中文字幕在线观看| 日韩有码在线视频| 日韩欧美国产视频| 91高清在线免费观看| 精品久久久中文| 韩国三级电影久久久久久| www.日韩av.com| 亚洲男人7777| 亚洲视频在线看| www.色综合| 欧美老妇交乱视频| 日韩精品在线免费观看视频| 国产视频观看一区| 亚州成人av在线| 国产在线不卡精品| 成人黄色激情网| 欧美国产日本在线| 精品国内自产拍在线观看| 午夜精品理论片| 日韩国产在线看| 在线看日韩av| 97在线免费观看| 亚洲欧美制服丝袜| 麻豆乱码国产一区二区三区| 青草青草久热精品视频在线观看| 91精品久久久久久久久久久久久久| 亚洲缚视频在线观看| 国产精品影片在线观看| 欧美午夜久久久| 色小说视频一区| 国产精品第3页| 日韩免费视频在线观看| 国产在线播放91| 欧美性xxxxxx| 精品视频www| 久久视频这里只有精品| 中文字幕欧美亚洲| 国产视频欧美视频| 国产精品jizz在线观看麻豆| 国产剧情久久久久久| 久久6免费高清热精品| 欧美—级高清免费播放| 国产成人小视频在线观看| 欧美性视频精品| 亚洲激情视频网| 欧美一区在线直播| 国产精品wwww| 欧美精品激情在线观看| 91福利视频在线观看| 亚洲成人av片| 欧美激情2020午夜免费观看| 欧美日韩福利电影| 亚洲精品成人久久电影| 日韩精品极品在线观看播放免费视频| 国产中文日韩欧美| 日韩欧美中文字幕在线播放| 欧美午夜宅男影院在线观看| 成人乱人伦精品视频在线观看| 日韩精品在线免费观看视频| 欧美xxxwww| 欧美成人久久久| 久久这里只有精品99| 国产精品久久国产精品99gif| 精品久久久一区| 91干在线观看| 高清欧美一区二区三区| 欧美激情高清视频| 久久99久国产精品黄毛片入口| 亚洲图片在区色| 国产精品久久久久久久久久东京| 国产精品爽爽ⅴa在线观看| 色偷偷88888欧美精品久久久| 美日韩精品免费视频| 久久久精品影院| 亚洲影院色无极综合| 日韩国产在线播放| 久久国产加勒比精品无码| 精品视频在线播放色网色视频| 日本成人黄色片| 国产在线观看精品| 精品视频一区在线视频| 亚洲精品99999| 91av视频在线观看| 国产精品99久久久久久久久久久久| 久久免费视频这里只有精品| 北条麻妃一区二区三区中文字幕| 91精品国产综合久久香蕉的用户体验| 欧美激情视频网址| 国产成人精品视| 欧美精品www在线观看| 亚洲视频在线观看网站| 国产精品久久久一区| 欧美一级视频免费在线观看| 粗暴蹂躏中文一区二区三区| 国产乱肥老妇国产一区二|