国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript+HTML5 canvas實現放大鏡效果完整示例

2019-11-19 11:34:10
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript+HTML5 canvas實現放大鏡效果。分享給大家供大家參考,具體如下:

效果:

<!DOCTYPE html><html><head lang="en">  <meta charset="UTF-8">  <title>m.survivalescaperooms.com canvas放大鏡</title>  <style>    #copycanvas {      border: 1px solid #000;      display: none;    }    #square {      width: 90px;      height: 90px;      background-color: #cc3;      border: 1px solid #f00;      opacity: 0.5;      position: absolute;      z-index: 999;      display: none;      cursor: crosshair;    }  </style></head><body><canvas id="canvas" width="450" height="676"></canvas><canvas id="copycanvas" width="300" height="300"></canvas><div id="square"></div><script>  var canvas = document.getElementById('canvas'), //獲取canvas對象      context = canvas.getContext('2d'), //獲取上下文      copycanvas = document.getElementById('copycanvas'), //獲取copycanvas      copycontext = copycanvas.getContext('2d'),      square = document.getElementById('square'), //獲取透明框      squaredata = {}, //用來保存選擇框數據      box = canvas.getBoundingClientRect();  //getBoundingClientRect方法可以獲取元素上、下、左、右分別相對瀏覽器的坐標位置  //創建圖像對象,并加載  image = new Image();  image.src = "3.jpg";  image.onload = function(){    context.drawImage(image,0,0,canvas.width,canvas.height);  };  canvas.onmouseover = function(e){    var x = e.clientX, //獲取鼠標實時坐標        y = e.clientY;    createSquare(x,y); //保存透明選擇框屬性  };  window.onmousemove = function(e){    var x = e.clientX,        y = e.clientY;    //判斷鼠標是否移出canvas    if(x >= canvas.offsetLeft && x <= canvas.offsetLeft + canvas.width &&        y >= canvas.offsetTop && y <= canvas.offsetTop + canvas.height){      createSquare(x,y);    }else{      hideSquare();      hideCanvas();    }  }  function showSquare(){    square.style.display = 'block';  }  function hideSquare(){    square.style.display = 'none';  }  function showCanvas(){    copycanvas.style.display = "inline";  }  function hideCanvas(){    copycanvas.style.display = "none";  }  function createSquare(x,y){    //控制選擇框不移動出canvas    x = x - 45 < canvas.offsetLeft ? canvas.offsetLeft:x - 45;    y = y - 45 < canvas.offsetTop ? canvas.offsetTop:y - 45;    x = x + 90 < box.right ? x:box.right - 90;    y = y + 90 < box.bottom ? y:box.bottom - 90;    squaredata.left = x;    squaredata.top = y;    moveSquare(x,y);  }  function moveSquare(x,y){    square.style.left = x + "px";    square.style.top = y + "px";    showCanvas();    showSquare();    copy();  }  function copy(){    copycontext.drawImage(        canvas,        squaredata.left - box.left,        squaredata.top - box.top,        90,        90,        0,        0,        copycanvas.width,        copycanvas.height    );  }</script></body></html>

感興趣的朋友可使用在線HTML/CSS/JavaScript代碼運行工具http://tools.VeVB.COm/code/HtmlJsRun測試一下運行效果。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript圖片操作技巧大全》、《JavaScript運動效果與技巧匯總》、《JavaScript+HTML5特效與技巧匯總》、《JavaScript圖形繪制技巧總結》、《JavaScript數據結構與算法技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 修武县| 方城县| 布拖县| 建始县| 南平市| 疏附县| 祁东县| 舒城县| 汝南县| 康定县| 阜平县| 荥阳市| 日土县| 巩义市| 南涧| 疏附县| 平泉县| 遂宁市| 蓬溪县| 寿阳县| 安庆市| 顺平县| 磐石市| 姚安县| 兴和县| 宣威市| 图木舒克市| 商洛市| 青田县| 白银市| 安国市| 青龙| 临沂市| 宁阳县| 双城市| 工布江达县| 海口市| 汶上县| 茂名市| 桂东县| 沙坪坝区|