How to create a color picker in html?

后端 未结 5 699
醉话见心
醉话见心 2020-12-30 05:47

How to make a color picker, like we see in different websites where users can scroll down different colors and on click can get the color code?

I have tried of maki

5条回答
  •  鱼传尺愫
    2020-12-30 06:32

    In addition for answer of Gil Epshtain, if you do not wanna load an image you can fill the canvas with gradients

    function initColorPicker() {
      var canvas = document.getElementById('colorCanvas');
      var canvasContext = canvas.getContext('2d');
    
      let gradient = canvas.getContext('2d').createLinearGradient(0, 0, canvas.width, 0)
      gradient.addColorStop(0, '#ff0000')
      gradient.addColorStop(1 / 6, '#ffff00')
      gradient.addColorStop((1 / 6) * 2, '#00ff00')
      gradient.addColorStop((1 / 6) * 3, '#00ffff')
      gradient.addColorStop((1 / 6) * 4, '#0000ff')
      gradient.addColorStop((1 / 6) * 5, '#ff00ff')
      gradient.addColorStop(1, '#ff0000')
      canvas.getContext('2d').fillStyle = gradient
      canvas.getContext('2d').fillRect(0, 0, canvas.width, canvas.height)
    
      gradient = canvas.getContext('2d').createLinearGradient(0, 0, 0, canvas.height)
      gradient.addColorStop(0, 'rgba(255, 255, 255, 1)')
      gradient.addColorStop(0.5, 'rgba(255, 255, 255, 0)')
      gradient.addColorStop(1, 'rgba(255, 255, 255, 0)')
      canvas.getContext('2d').fillStyle = gradient
      canvas.getContext('2d').fillRect(0, 0, canvas.width, canvas.height)
    
      gradient = canvas.getContext('2d').createLinearGradient(0, 0, 0, canvas.height)
      gradient.addColorStop(0, 'rgba(0, 0, 0, 0)')
      gradient.addColorStop(0.5, 'rgba(0, 0, 0, 0)')
      gradient.addColorStop(1, 'rgba(0, 0, 0, 1)')
      canvas.getContext('2d').fillStyle = gradient
      canvas.getContext('2d').fillRect(0, 0, canvas.width, canvas.height)
    
    
      canvas.onclick = function(e) {
      	console.log()
        var imgData = canvasContext.getImageData((e.offsetX / canvas.clientWidth) * canvas.width, (e.offsetY / canvas.clientHeight) * canvas.height, 1, 1)
        var rgba = imgData.data;
        var color = "rgba(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] + ", " + rgba[3] + ")";
        console.log("%c" + color, "color:" + color)
      }
    }
    
    initColorPicker()
    * {
      padding: 0;
      margin: 0;
      box-sizing: border-box;
    }
    
    html {
      height: 100%;
      width: 100%;
    }
    
    body {
      height: 100%;
      width: 100%;
      margin: 0;
    }
    
    canvas {
      height: 100%;
      width: 100%;
    }
    
    
      
        
      
    
    

提交回复
热议问题