所以我说的不是HTML元素,我想做一个JS颜色选择器。
到目前为止,我创建了一个HTML,并添加了每个RGB值,这是可能的,因为,很好地打印所有的24位都是intensive.But,我很困惑如何在JS中创建一个RGBA颜色选择器?
我看到的所有例子都没有显示所有的RGB光谱,它们是如何工作的?该算法或方法是否显示RGB频谱选择器并在浏览器上显示光?
谢谢。
发布于 2020-12-28 15:11:42
这里有些东西可以玩。有几件事要注意。
"use strict";
window.addEventListener('load', onLoaded, false);
function onLoaded(evt)
{
let can = document.querySelector('canvas');
let ctx = can.getContext('2d');
for (let x=0; x<360; x++)
{
ctx.fillStyle = `hsl(${x}deg, 100%, 50%)`;
ctx.fillRect(x,0,1,can.height);
}
can.addEventListener('mousemove', onMouseMove, false);
}
function onMouseMove(evt)
{
let can = this;
let xPos = evt.offsetX;
let yPos = evt.offsetY;
let ctx = this.getContext('2d');
let imgData = ctx.getImageData(xPos,yPos,1,1);
let r = imgData.data[0];
let g = imgData.data[1];
let b = imgData.data[2];
let tgt = document.getElementById('hovCol');
tgt.style.backgroundColor = `rgb(${r},${g},${b})`;
drawSatLumCanvas(xPos);
}
function drawSatLumCanvas(hueDegrees)
{
let can = document.querySelectorAll('canvas')[1];
let ctx = can.getContext('2d');
for (var y=0; y<100; y++)
{
for (var x=0; x<100; x++)
{
ctx.fillStyle = `hsl(${hueDegrees}deg, ${x}%, ${100-y}%)`;
ctx.fillRect(x,y,1,1);
}
}
}.swatch
{
display: inline-block;
height: 1em;
width: 1em;
border: solid 1px #888;
}<body>
<canvas width=360 height=100></canvas><br>
Hovered: <span class='swatch' id='hovCol'></span><br>
<canvas width=100 height=100 id='slCol'><canvas>
</body>
https://stackoverflow.com/questions/65472351
复制相似问题