赞
踩
相信大家平时工作的时候应该会经常用到颜色码吧,比如说想找个好看的颜色,或者有个颜色码但是不知道这个码是什么颜色的,这个时候我们就可以用颜色码对照表或者颜色码查询来查看了。
当然也可以用截图软件或者取色器或者PS来查看,不过这终究不是很方便、全面。这个时候我们可以自己写一个颜色码对照表,然后把它收藏到标签栏,用的时候随时打开随时用。
这个时候有人可能要说这种网站随便网上一搜多的是。是,确实有很多,但这终究是别人的网站,无法定制化。所谓定制化就是把自己经常用到的颜色用色块列出来,下次用的时候直接打开一看,你就知道具体颜色是什么样的,然后就可以复制颜色码使用了。不然每次用的时候又没记住码,去网站上找都找花了眼,然后还得去翻看以前的使用记录,看看到底是哪个颜色码。
所以自己写一个html,把自己经常用到的颜色写上去就很方便了。
我们先来看看效果图吧。
最上面两个输入框,就是rgb和hex相互转换;输入颜色值后,输入框后面的小方块会自动变成对应的颜色,点击色块,自动复制颜色码。
中间那块就是颜色选择器,其中左边那一片色块区域,就是放自己经常用到的颜色码,直接点击色块,自动复制颜色码,并且右边的颜色选择器和两个输入框也会自动选择/输出对应的颜色。
最下面那块就是颜色大全,点击色块或者旁边的文字,都可以直接复制颜色码。
单击复制颜色码:
接下来就是代码了。代码比较多,主要是最下面那块颜色大全是写死在html上的,不像上面那个常用颜色色块是动态创建的元素。因为考虑到这个颜色大全非常多,有五百多个td元素,这动态创建的话,我怕页面会卡,所以就直接写死了。这里的话我没有把那五百多个td元素写上了,完整的可以去资源下载或者是去我给的git链接上下载。
<!DOCTYPE html> <html> <head> <title>RGB颜色查询对照表</title> <style> *{ margin: 0 auto; } body{ background-color: #68768a; } /* 设置滚动条的样式 */ ::-webkit-scrollbar { width:5px; } /* 滚动槽 */ ::-webkit-scrollbar-track { -webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.3); border-radius:10px; } /* 滚动条滑块 */ ::-webkit-scrollbar-thumb { border-radius:10px; background:rgba(0,0,0,0.1); -webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.5); } ::-webkit-scrollbar-thumb:window-inactive { background:rgba(30, 144, 255,0.4); } .main{ position: relative; top: 30px; width: 90%; text-align: center; } .RGB转HEX{ margin-bottom: 30px; } label{ color: #00bfff; font-size: 1.5em; } #色值转换 input{ width: 300px; height: 30px; padding: 10px; font-size: 18px; border-radius: 10px; border: none; } .color-block { display: inline-block; width: 48px; height: 48px; border: 1px solid #1e90ff; vertical-align: top; } #颜色选择器{ margin-top: 40px; } ul{ display: flex; flex-wrap: wrap; width: 250px; float: left; margin-left: 35%; } li{ list-style: none; width: 20px; height: 20px; margin: 2.5px; cursor: pointer; } .颜色选择器{ float: left; margin-left: 20px; } #colorPicker{ height: 48px; vertical-align: top; display: inline-block; } #colorInputRgb, #colorInputHex{ width: 150px; height: 30px; padding: 10px; font-size: 18px; border-radius: 10px; border: none; display: inherit; margin-top: 20px; } #颜色大全{ margin-top: 450px; } td:nth-child(odd) { height:30px; width:30px; } td:nth-child(even) { color: #005caf; font: 12px/18px Verdana; } td:hover{ cursor: pointer } </style> <style type="text/css"> /*----------------------------------------- 设置消息弹框的样式 --------------------------------------*/ /*预定义样式,通过js动态生成dom时,加上指定类名*/ .dpn-message { font-family: "\5FAE\8F6F\96C5\9ED1", Helvetica, sans-serif; font-size: 12px; z-index: 99999; } .dpn-message { box-sizing: border-box; position: fixed; top: -200px; left: 50%; transform: translateX(-50%); z-index: 99999; padding: 15px; padding-right: 32px; min-width: 20%; max-width: 50%; border-radius: 4px; transition: top .3s; } /*info 消息*/ .dpn-message.dpn-info { background: #EDF2FC; border: 1px solid #EBEEF5; color: #909399; } /*success消息*/ .dpn-message.dpn-success { background: #f0f9eb; border: 1px solid #54f006; color: #67C23A; } /*error消息*/ .dpn-message.dpn-error { background: #fef0f0; border: 1px solid #fde2e2; color: #F56C6C; } /*warning消息*/ .dpn-message.dpn-warning { background: #fdf6ec; border: 1px solid #faecd8; color: #E6A23C; } .dpn-message .dpn-close { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; line-height: 16px; text-align: center; font-style: normal; cursor: pointer; } </style> </head> <body> <div class="main"> <div id="色值转换"> <div class="RGB转HEX"> <label>RGB转HEX:</label> <input type="text" id="rgbInput" onblur="convertRGBtoHEX()" oninput="convertRGBtoHEX()" placeholder="255,255,255"/> <div id="rgbToHexColor" class="color-block"></div> </div> <div class="HEX转RGB"> <label>HEX转RGB:</label> <input type="text" id="hexInput" onblur="convertHEXtoRGB()" oninput="convertHEXtoRGB()" placeholder="000 或 000000"/> <div id="hexToRgbColor" class="color-block"></div> </div> </div> <div id="颜色选择器"> <ul id="color-ur"></ul> <div class="颜色选择器"> <input type="color" id="colorPicker" onchange="updateColorPicker()" /> <input type="text" id="colorInputRgb" oninput="updateColorInputRgb()" placeholder="rgb颜色值"/> <input type="text" id="colorInputHex" oninput="updateColorInputHex()" placeholder="hex颜色值"/> </div> </div> <div id="颜色大全"> <table cellspacing="3"> <!-- 这里省略颜色大全tbody --> </table> </div> </div> <!-- 动态创建消息弹框 --> <script type="text/javascript"> class MessageBox { constructor(options) { // 把传递进来的配置信息挂载到实例上(以后可以基于实例在各个方法各个地方拿到这个信息) for(let key in options) { if(!options.hasOwnProperty(key)) break; this[key] = options[key]; } // 开始执行 this.init(); } // 初始化:通过执行INIT控制逻辑的进行 init() { if(this.status === "message") { this.createMessage(); this.open(); return; } } // 创建元素 createMessage() { this.messageBox = document.createElement('div'); this.messageBox.className = `dpn-message dpn-${this.type}`; this.messageBox.innerHTML = ` ${this.message} <i class="dpn-close">X</i> `; document.body.appendChild(this.messageBox); // 基于事件委托监听关闭按钮的点击 this.messageBox.onclick = ev => { let target = ev.target; //判断点击的元素是否为关闭按钮 if(target.className === "dpn-close") { // 点击的是关闭按钮 this.close(); } }; // 钩子函数 this.oninit(); } // 控制显示 open() { if(this.status === "message") { let messageBoxs = document.querySelectorAll('.dpn-message'), len = messageBoxs.length; //计算新弹出的messageBox的Y轴偏移量 this.messageBox.style.top = `${len===1 ? 20:20+(len-1)*70}px`; // 如果duration不为零,控制自动消失 this.autoTimer = setTimeout(() => { this.close(); }, this.duration); // 钩子函数 this.onopen(); return; } } // 控制隐藏 close() { if(this.status === "message") { clearTimeout(this.autoTimer); this.messageBox.style.top = '-200px'; let anonymous = () => { document.body.removeChild(this.messageBox); // 钩子函数 this.onclose(); }; this.messageBox.addEventListener('transitionend', anonymous); return; } } } //全局对象上挂载该方法 window.messageplugin = function(options = {}) { //允许只传入字符串,对其进行对象格式处理 if(typeof options === "string") { options = { message: options }; } //用户提供的配置覆盖默认配置项 options = Object.assign({ status: 'message', message: '我是默认信息', type: 'info', duration: 3000, //生命周期钩子 oninit() {}, onopen() {}, onclose() {}, }, options); return new MessageBox(options); }; </script> <script> /*-------------------------------------------- 颜色转换 --------------------------------------------*/ let rgbToHexColor = document.getElementById('rgbToHexColor'); let hexToRgbColor = document.getElementById("hexToRgbColor"); function rgbToHex(rgb) { //适配了中英文逗号 var parsedRgb = /(\d{1,3})[\s,,]+(\d{1,3})[\s,,]+(\d{1,3})/g.exec(rgb); var r = parseInt(parsedRgb[1]); var g = parseInt(parsedRgb[2]); var b = parseInt(parsedRgb[3]); var hexR = ("0" + r.toString(16)).slice(-2); var hexG = ("0" + g.toString(16)).slice(-2); var hexB = ("0" + b.toString(16)).slice(-2); return "#" + hexR + hexG + hexB; } function hexToRgb(hex) { var parsedHex = /^#?([\da-f]{1,2})([\da-f]{1,2})([\da-f]{1,2})$/i.exec(hex); var r = parseInt(parsedHex[1], 16); var g = parseInt(parsedHex[2], 16); var b = parseInt(parsedHex[3], 16); if (parsedHex[1].length === 1) { r = r * 17; g = g * 17; b = b * 17; } return r + ", " + g + ", " + b; } // rgb转hex,将hex输入框的值设置为hex码,同时设置两个色块的颜色 function convertRGBtoHEX() { var rgbInput = document.getElementById("rgbInput").value; var hexColor = rgbToHex(rgbInput); document.getElementById("rgbToHexColor").style.background = hexColor; document.getElementById("hexToRgbColor").style.background = hexColor; document.getElementById("hexInput").value = hexColor; } // hex转rgb,将rgb输入框的值设置为rgb,同时设置两个色块的颜色 function convertHEXtoRGB() { var hexInput = document.getElementById("hexInput").value; var rgbColor = hexToRgb(hexInput); document.getElementById("hexToRgbColor").style.background = "rgb(" + rgbColor + ")"; document.getElementById("rgbToHexColor").style.background = "rgb(" + rgbColor + ")"; document.getElementById("rgbInput").value = "rgb(" + rgbColor + ")"; } // 单击色块时,复制颜色码(rgb转hex色块的复制hex码) rgbToHexColor.onclick = function(e){ let rgb = e.target.style.backgroundColor; if(rgb){ let hex = rgbToHex(rgb); // 执行复制 navigator.clipboard.writeText(hex).then(function() { messageplugin({ message: "复制成功,"+hex, type: "success" }); }).catch(function(error) { console.error('无法复制文本:', error); }); } } // 单击色块时,复制颜色码(hex转rgb色块的复制rgb码) hexToRgbColor.onclick = function(e){ let rgb = e.target.style.backgroundColor; if(rgb){ // 执行复制 navigator.clipboard.writeText(rgb).then(function() { messageplugin({ message: "复制成功,"+rgb, type: "success" }); }).catch(function(error) { console.error('无法复制文本:', error); }); } } /*-------------------------------------------- 颜色选择 --------------------------------------------*/ let colorUl=document.getElementById('color-ur'); let colorPicker = document.getElementById("colorPicker"); let colorInputRgb = document.getElementById("colorInputRgb"); let colorInputHex = document.getElementById("colorInputHex"); let 颜色大全 = document.getElementById("颜色大全"); /*------------------------------------------ 常用颜色大全 ------------------------------------------*/ let colorArr = [ "#000000","#434343","#ffffff","#980000","#ff0000","#ff9900","#ffff00","#DDD23B","#CA7A2C","#BEC23F", "#00ff00","#00ffff","#4a86e8","#0000ff","#9900ff","#ff00ff","#e6b8af","#f4cccc","#fce5cd","#fff2cc", "#d9ead3","#d0e0e3","#c9daf8","#cfe2f3","#d9d2e9","#ead1dc","#dd7e6b","#ea9999","#f9cb9c","#ffe599", "#b6d7a8","#a2c4c9","#a4c2f4","#9fc5e8","#b4a7d6","#d5a6bd","#cc4125","#e06666","#f6b26b","#ffd966", "#93c47d","#76a5af","#6d9eeb","#6fa8dc","#8e7cc3","#c27ba0","#a61c00","#cc0000","#e69138","#f1c232", "#6aa84f","#45818e","#3c78d8","#3d85c6","#674ea7","#a64d79","#660000","#7f6000","#274e13","#0c343d", "#1c4587","#073763","#20124d","#68768a","#1e90ff","#00bfff","#C7802D","#48c0a4","#549688","#69b0ac", "#91ad70","#7398Ab","#b4caa0","#5dac81","#376b6d","#91b493","#68b4b0","#1B813E","#3d6167","#005CAF", "#2D6D4B","#24936E","#00AA90","#86c166","#838A2D","#90B44B","#66BAB7","#268785","#70B9DE","#33A6B8", "#1E88A8","#008947","#2EA9DF","#F8C3CD","#E16B8C","#DC9FB4","#F4A7B9","#B5495B","#E87A90","#D05A6E", "#DB4D6D","#D0104C","#EB7A77","#CB4042","#AB3B3A","#994639","#F19483","#B54434","#F17C67","#E83015", "#F75C2F","#F05E1C","#ED784A","#FB9966","#D75455","#9F353A","#E3916E","#C73E3A","#C46243","#E8B647", "#F6C555","#FBE251","#FFB11B","#FC9F4D","#FAD689","#FFC408","#F9BF45","#E9CD4C","#EFBB24","#D9AB42" ]; // 动态添加li function iniColorPicker(){ let html = ''; let self = this; for(let i=0;i<colorArr.length;i++){ html+= '<li style="background:'+ colorArr[i]+'"> </li>'; } colorUl.innerHTML=html; } iniColorPicker(); // 颜色选择器中选择颜色时,将颜色值设置到input文本框中 function updateColorPicker() { let hex = colorPicker.value; let rgb = hexToRgb(hex); colorInputRgb.value = "rgb(" + rgb + ")"; colorInputHex.value = hex; } // 当rgb框输入了颜色值时,设置颜色选择器的值 function updateColorInputRgb() { let rgb = colorInputRgb.value; let hex = rgbToHex(rgb); colorPicker.value = hex; colorPicker.style.backgroundColor = hex; colorInputHex.value = hex; } // 当hex框输入了颜色值时,设置颜色选择器的值 function updateColorInputHex() { let hex = colorInputHex.value; let rgb = hexToRgb(hex); hex = rgbToHex(rgb); colorPicker.value = hex; colorPicker.style.backgroundColor = hex; colorInputRgb.value = "rgb(" + rgb + ")"; } // 单击常用颜色时,设置颜色选择器的值、input文本框的值 colorUl.onclick = function(e){ if(e.target.tagName.toLowerCase() === 'li'){ let rgb = e.target.style.backgroundColor; let hex = rgbToHex(rgb); colorInputRgb.value = rgb; colorInputHex.value = hex; colorPicker.value = hex; colorPicker.style.backgroundColor = hex; // 执行复制 navigator.clipboard.writeText(hex).then(function() { messageplugin({ message: "复制成功,"+hex, type: "success" }); }).catch(function(error) { console.error('无法复制文本:', error); }); } } // 单击表格的td元素时,复制元素的hex值 颜色大全.onclick = function(e){ if(e.target.tagName.toLowerCase() === 'td'){ var td = e.target; // 获取色块td的bgcolor属性的值 var hex = td.getAttribute('bgcolor'); if(hex === null){ // 如果值为null,说明单击的不是色块td,而是文字td hex = td.innerHTML; // 则直接获取文字td的innerHTML } // 执行复制 navigator.clipboard.writeText(hex).then(function() { messageplugin({ message: "复制成功,"+hex, type: "success" }); }).catch(function(error) { console.error('无法复制文本:', error); }); } } </script> </body> </html>
设置常用颜色的话,在常用颜色大全 colorArr 这个数组里面,把自己的常用颜色设置进去就行了。
Gitee链接在 这里
所有代码只在一个html文件里,可以直接复制保存,然后用浏览器打开就行,打开后,收藏到浏览器标签栏,以后要用就很方便了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。