歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> HTML5 canvas做的一個圖片局部放大的效果

HTML5 canvas做的一個圖片局部放大的效果

日期:2017/3/1 10:37:07   编辑:Linux編程

看到老外做HTML5的越來越多了,今天看到一個其中用HTML5做的效果不錯, 是在canvas上畫的圈,做放大器,並且監視了鼠標的相關事件,代碼如下:

HTML部分

  1. <!DOCTYPE html>
  2. <html lang="en" >
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>HTML5 canvas - Image zoomer | muu.cc</title>
  6. <link href="css/main.css" rel="stylesheet" type="text/css" />
  7. <script type="text/javascript" src="js/jquery-1.5.2.min.js"></script>
  8. <script type="text/javascript" src="js/script.js"></script>
  9. </head>
  10. <body>
  11. <div class="container">
  12. <canvas id="panel" width="800" height="533"></canvas>
  13. </div>
  14. <footer>
  15. <h2>HTML5 canvas - Image zoomer</h2>
  16. <a href="http://www.muu.cc" class="stuts">Back to original MUU.cc on <span>MUU CC</span></a>
  17. </footer>
  18. </body>
  19. </html>

CSS部分:

  1. *{
  2. margin:0;
  3. padding:0;
  4. }
  5. body {
  6. background-color:#bababa;
  7. color:#fff;
  8. font:14px/1.3 Arial,sans-serif;
  9. }
  10. footer {
  11. background-color:#212121;
  12. bottom:0;
  13. box-shadow: 0 -1px 2px #111111;
  14. display:block;
  15. height:70px;
  16. left:0;
  17. position:fixed;
  18. width:100%;
  19. z-index:100;
  20. }
  21. footer h2{
  22. font-size:22px;
  23. font-weight:normal;
  24. left:50%;
  25. margin-left:-400px;
  26. padding:22px 0;
  27. position:absolute;
  28. width:540px;
  29. }
  30. footer a.stuts,a.stuts:visited{
  31. border:none;
  32. text-decoration:none;
  33. color:#fcfcfc;
  34. font-size:14px;
  35. left:50%;
  36. line-height:31px;
  37. margin:23px 0 0 110px;
  38. position:absolute;
  39. top:0;
  40. }
  41. footer .stuts span {
  42. font-size:22px;
  43. font-weight:bold;
  44. margin-left:5px;
  45. }
  46. .container {
  47. color:#000;
  48. margin:20px auto;
  49. position:relative;
  50. width:800px;
  51. }
  52. #panel {
  53. border:1px #000 solid;
  54. box-shadow:4px 6px 6px #444444;
  55. cursor:crosshair;
  56. }

script.js

  1. // variables
  2. var canvas, ctx;
  3. var image;
  4. var iMouseX, iMouseY = 1;
  5. var bMouseDown = false;
  6. var iZoomRadius = 100;
  7. var iZoomPower = 2;
  8. // drawing functions
  9. function clear() { // clear canvas function
  10. ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
  11. }
  12. function drawScene() { // main drawScene function
  13. clear(); // clear canvas
  14. if (bMouseDown) { // drawing zoom area
  15. ctx.drawImage(image, 0 - iMouseX * (iZoomPower - 1), 0 - iMouseY * (iZoomPower - 1), ctx.canvas.width * iZoomPower, ctx.canvas.height * iZoomPower);
  16. ctx.globalCompositeOperation = 'destination-atop';
  17. var oGrd = ctx.createRadialGradient(iMouseX, iMouseY, 0, iMouseX, iMouseY, iZoomRadius);
  18. oGrd.addColorStop(0.8, "rgba(0, 0, 0, 1.0)");
  19. oGrd.addColorStop(1.0, "rgba(0, 0, 0, 0.1)");
  20. ctx.fillStyle = oGrd;
  21. ctx.beginPath();
  22. ctx.arc(iMouseX, iMouseY, iZoomRadius, 0, Math.PI*2, true);
  23. ctx.closePath();
  24. ctx.fill();
  25. }
  26. // draw source image
  27. ctx.drawImage(image, 0, 0, ctx.canvas.width, ctx.canvas.height);
  28. }
  29. $(function(){
  30. // loading source image
  31. image = new Image();
  32. image.onload = function () {
  33. }
  34. image.src = 'images/image.jpg';
  35. // creating canvas object
  36. canvas = document.getElementById('panel');
  37. ctx = canvas.getContext('2d');
  38. $('#panel').mousemove(function(e) { // mouse move handler
  39. var canvasOffset = $(canvas).offset();
  40. iMouseX = Math.floor(e.pageX - canvasOffset.left);
  41. iMouseY = Math.floor(e.pageY - canvasOffset.top);
  42. });
  43. $('#panel').mousedown(function(e) { // binding mousedown event
  44. bMouseDown = true;
  45. });
  46. $('#panel').mouseup(function(e) { // binding mouseup event
  47. bMouseDown = false;
  48. });
  49. setInterval(drawScene, 30); // loop drawScene
  50. });

一個在線效果在:

http://www.muu.cc/html5/Imagezoomer/index.html

要用chrome,firefox,safri等浏覽器看

Copyright © Linux教程網 All Rights Reserved