canvas教程

使用HTML5技术开发的超酷颜色选择器

字号+ 作者:H5之家 来源:H5之家 2016-01-15 17:25 我要评论( )

使用HTML5技术开发的超酷颜色选择器,HTML5技术交流,HTML5中国

使用HTML5技术来自己实现一个更棒的颜色选择器。希望大家喜欢!

HTML代码

  • <!-- preview element -->
  • <div class="preview"></div>

  • <!-- colorpicker element -->
  • <div class="colorpicker" style="display:none">
  •     <canvas id="picker" var="1" width="300" height="300"></canvas>

  •     <div class="controls">
  •         <div><label>R</label> <input type="text" id="rVal" /></div>
  •         <div><label>G</label> <input type="text" id="gVal" /></div>
  •         <div><label>B</label> <input type="text" id="bVal" /></div>
  •         <div><label>RGB</label> <input type="text" id="rgbVal" /></div>
  •         <div><label>HEX</label> <input type="text" id="hexVal" /></div>
  •     </div>
  • </div>

    复制代码


    代码很简单,包含了2个部分,一个点击元素,一个用来展示颜色选择器的元素。

    Javascript代码

  • $(function(){
  •     var bCanPreview = true; // can preview

  •     // create canvas and context objects
  •     var canvas = document.getElementById('picker');
  •     var ctx = canvas.getContext('2d');

  •     // drawing active image
  •     var image = new Image();
  •     image.onload = function () {
  •         ctx.drawImage(image, 0, 0, image.width, image.height); // draw the image on the canvas
  •     }

  •     // select desired colorwheel
  •     var imagesrc="images/colorwheel1.png";
  •     switch ($(canvas).attr('var')) {
  •         case '2':
  •             imagesrc="images/colorwheel2.png";
  •             break;
  •         case '3':
  •             imagesrc="images/colorwheel3.png";
  •             break;
  •         case '4':
  •             imagesrc="images/colorwheel4.png";
  •             break;
  •         case '5':
  •             imagesrc="images/colorwheel5.png";
  •             break;
  •     }
  •     image.src = imageSrc;

  •     $('#picker').mousemove(function(e) { // mouse move handler
  •         if (bCanPreview) {
  •             // get coordinates of current position
  •             var canvasOffset = $(canvas).offset();
  •             var canvasX = Math.floor(e.pageX - canvasOffset.left);
  •             var canvasY = Math.floor(e.pageY - canvasOffset.top);

  •             // get current pixel
  •             var imageData = ctx.getImageData(canvasX, canvasY, 1, 1);
  •             var pixel = imageData.data;

  •             // update preview color
  •             var pixelColor = "rgb("+pixel[0]+", "+pixel[1]+", "+pixel[2]+")";
  •             $('.preview').css('backgroundColor', pixelColor);

  •             // update controls
  •             $('#rVal').val(pixel[0]);
  •             $('#gVal').val(pixel[1]);
  •             $('#bVal').val(pixel[2]);
  •             $('#rgbVal').val(pixel[0]+','+pixel[1]+','+pixel[2]);

  •             var dColor = pixel[2] + 256 * pixel[1] + 65536 * pixel[0];
  •             $('#hexVal').val('#' + ('0000' + dColor.toString(16)).substr(-6));
  •         }
  •     });
  •     $('#picker').click(function(e) { // click event handler
  •         bCanPreview = !bCanPreview;
  •     });
  •     $('.preview').click(function(e) { // preview click
  •         $('.colorpicker').fadeToggle("slow", "linear");
  •         bCanPreview = true;
  •     });
  • });

    复制代码


    大家可以看到,这是一个非常短的js代码,用来创建新的画布和对象,然后我们画出一个圆形的颜色板。你可以选择不同颜色底板。 这里使用一个参数来设定不同的选择。如下:

  • <canvas id="picker" var="1" width="300" height="300"></canvas>

    复制代码

  • <canvas id="picker" var="2" width="300" height="300"></canvas>

    复制代码

  • <canvas id="picker" var="3" width="300" height="300"></canvas>

    复制代码

  • <canvas id="picker" var="4" width="300" height="300"></canvas>

    复制代码

     

  • 1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • html5canvas核心技术图形、动画与游戏开发源码

      html5canvas核心技术图形、动画与游戏开发源码

      2017-05-02 17:42

    • 打印html5中Canvas的方法

      打印html5中Canvas的方法

      2017-05-01 15:03

    • HTML样式CSS

      HTML样式CSS

      2017-05-01 10:03

    • HTML5+Canvas调用手机拍照功能实现图片上传(下)

      HTML5+Canvas调用手机拍照功能实现图片上传(下)

      2017-04-30 17:00

    网友点评