亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

js實現圖片區域可點擊大小隨意改變(適用移動端)代碼實例

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

實現圖片區域可點擊,實際上使用map是可以的,但是適配效果并不好,圖片只能是固定大小的值,而且點都被寫死了。

在這里,我使用的js基于canvas寫的一個小工具??梢匀Τ瞿阈枰c擊的部分,然后生成一串json,在預覽頁面就可以看見效果了;

在實際應用中,只要用工具處理一下圖片,再把數據存入數據庫,就很方便了;

使用工具時,先上傳圖片。然后就可以圈了,圈完一定要記得,點擊保存數據,,,接著就可以預覽了,預覽點擊的效果,可以看控制臺,

首先是工具

首先工具的html

<!DOCTYPE html><html>  <head>    <meta charset="UTF-8">    <title></title>    <style type="text/css">      *{        padding: 0;        margin: 0;        font-family: "微軟雅黑";      }      .hide{        display: none;      }      canvas{        border: 1px solid red;        display: block;        margin: 0 auto;        background-position: 0 0;        background-repeat: no-repeat;        background-size: 100% 100%;               }      .cover{        position: absolute;        top: 0;        left: 0;        width: 100%;        height: 100%;        background: rgba(0,0,0,0.4);      }      .cover p{        text-align: center;      }      .btn{        width: 800px;        margin: 0 auto;        padding-top: 10px;      }      .btn p{        padding-bottom: 10px;      }      a{        text-decoration: none;        color: #000;      }      button{        line-height: 30px;        padding: 0 10px;        cursor: pointer;        border-radius: 4px;        background: #449d44;        color: #fff;        border: none;      }    </style>  </head>  <body>    <div class="btn">      <p>        <button onclick="saveData()">保存數據</button>        <button onclick="getData()">導入數據</button>        <button onclick="seeData(true)">查看數據</button>        <a href="preview.html" rel="external nofollow" target="_blank"><button>預覽效果</button></a>      </p>      <p>        <input type="file" name="imgload" id="imgload" value="上傳圖片" />      </p>      <p>        <button onclick="reduo()">撤銷</button>        <button onclick="clearAll()">清除</button>      </p>      <p>        基礎寬度:<input type="text" name="width" id="width" value="800" />      </p>      <p>        基礎高度:<input type="text" name="width" id="height" value="600" />      </p>    </div>    <canvas id="canvas" width="800" height="600"></canvas>    <div class="cover hide">      <p>        <span>url地址:</span>        <input type="text" name="" id="urlAddress" value="" />      </p>      <p>        <span>描述:</span>        <input type="text" name="dec" id="dec" value="" />      </p>      <p>        <button class="contain">確認</button>      </p>    </div>  </body>  <script type="text/javascript" src="js/jquery.js"></script>  <script type="text/javascript" src="js/index.js"></script></html>

接著是工具的js代碼

var canvas = document.getElementById('canvas');  var ctx = canvas.getContext('2d');ctx.lineWidth = 1;ctx.strokeStyle="green";/*ctx.beginPath();ctx.moveTo(10, 100);ctx.lineTo(300,100);ctx.stroke(); ctx.closePath();*/var run = false;var moduleList = [];var path = [];var $baseImg = ''; var $cover = $(".cover");var $urlAddress = $('#urlAddress');var $dec = $("#dec"); var $baseWidth = $('#width');var $baseHeight = $('#height');  canvas.onmousedown = function(e){  //console.log(e.clientX);  //console.log(e.offsetX);   ctx.beginPath();  ctx.moveTo(e.offsetX, e.offsetY);  path.push({    x:e.offsetX,    y:e.offsetY  });  run = true;} canvas.onmousemove = function(e){  //var x = e.offsetX;      if(run){    ctx.lineTo(e.offsetX, e.offsetY);    ctx.stroke();    path.push({      x:e.offsetX,      y:e.offsetY    });  }}canvas.onmouseup = function(e){  run = false;  ctx.closePath();  if(path.length > 10){    $cover.removeClass('hide');  }else{    path = [];   }}  //保存數據function saveData(){  var data = {    "dec":"圖片點擊",    "version":"1",    "img":$baseImg,    "module":moduleList,    "baseWidth":$baseWidth.val(),    "baseHeight":$baseHeight.val()  }  console.log(JSON.stringify(data));  localStorage.setItem("data",JSON.stringify(data));}//查看數據function seeData(flag){  var data = {    "dec":"圖片點擊",    "version":"1",    "img":$baseImg,    "module":moduleList,    "baseWidth":$baseWidth.val(),    "baseHeight":$baseHeight.val()  }  if(flag){    console.log(JSON.stringify(data));  }  return data;}   //圖片背景$('#imgload').on('change',function(){    imgToBase64(this.files[0],function(result){      console.log(result);      var base64Data = 'url(' + result + ')';      $(canvas).css({'background-image': base64Data});      $baseImg = result;    });     }); //轉化為base64function imgToBase64(file,callback){   var reader = new FileReader();   reader.onload = function (e) {    callback(e.target.result);  };  reader.readAsDataURL(file); // 讀取完后會調用onload方法} //確認信息$cover.on('click','.contain',function(){  if($urlAddress.val() == ''){    alert('地址不能為空');  }else{    moduleList.push({      id:getName(),      path:path,      url:$urlAddress.val(),      dec:$dec.val()    });    path = [];     $cover.addClass('hide');  }});  //修改高度和寬度$baseWidth.on('change',function(){  $(canvas).css({'width': $(this).val()});});$baseHeight.on('change',function(){  $(canvas).css({'height': $(this).val()});});  //隨機獲取名稱function getName(){  var timer = new Date();  var arr = JSON.stringify(timer).replace(/:|-|"/g ,'').split('.');  var str = arr.join('');  return str;}  //導入模板function getData(){  var data = JSON.parse(localStorage.getItem("data"));  if(data){    moduleList = data.module;;    $baseImg = data.img;    drawn(data);  }else{    alert('沒有模板數據.');  }} //撤銷function reduo(){  moduleList.pop();  ctx.clearRect(0, 0, canvas.width, canvas.height);  drawn(seeData());}  //清除所有function clearAll(){  moduleList = [];  ctx.clearRect(0, 0, canvas.width, canvas.height);} //給數據,畫出來function drawn(data){  ctx.clearRect(0, 0, canvas.width, canvas.height);    var module = data.module;    var base64Data = 'url(' + data.img + ')';    $(canvas).css({'background-image': base64Data});    $baseWidth.val(data.baseWidth);    $baseHeight.val(data.baseHeight);    $(canvas).css({'width': data.baseWidth,'height':data.baseHeight});         //開始畫    for(var i = 0; i < module.length;i++){       var path = module[i].path;      ctx.beginPath();      ctx.moveTo(path[0].x, path[0].y);      for(var j = 1; j < path.length; j++){        ctx.lineTo(path[j].x, path[j].y);        ctx.stroke();       }      ctx.closePath();      }}

最后是preview.html預覽

<!DOCTYPE html><html>  <head>    <meta charset="UTF-8">    <title></title>    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />    <style type="text/css">      *{        padding: 0;        margin: 0;      }      body,html{        width: 100%;        height: 100%;      }      canvas{        background-position: 0 0;        background-repeat: no-repeat;        background-size: 100% 100%;        width: 100%;        height: 100%;      }      .wrap{        border: 1px solid red;        margin: 0 auto;        width: 800px;        height: 600px;      }    </style>  </head>  <body>    <div class="wrap">      <canvas id="canvas" ></canvas>    </div>       </body>  <script type="text/javascript" src="js/jquery.js"></script>  <script type="text/javascript">       var $canvas = $('#canvas');    var canvas = $canvas[0];           var data = JSON.parse(localStorage.getItem("data"));    var ctx = canvas.getContext('2d');      ctx.lineWidth = 1;      ctx.strokeStyle="rgba(0,0,0,0)";    var module = data.module;       var rateWidth = $canvas.width()/data.baseWidth;    var rateHeight = $canvas.height()/data.baseHeight;    var base64Data = 'url(' + data.img + ')';    $canvas.css({'background-image': base64Data});         console.log(rateWidth);    console.log(rateHeight);    //判斷點擊了圖片的某個地方    canvas.onclick = function(e){       var x = event.pageX - canvas.getBoundingClientRect().left;       var y = event.pageY - canvas.getBoundingClientRect().top;      for(var i = 0; i < module.length;i++){         var path = module[i].path;        ctx.beginPath();        ctx.moveTo(path[0].x*rateWidth, path[0].y*rateHeight);        for(var j = 1; j < path.length; j++){          ctx.lineTo(path[j].x*rateWidth, path[j].y*rateHeight);         }        ctx.closePath();          if(ctx.isPointInPath(x, y)){          clickCall(module[i]);          return;        }      }    };         //點擊中了選中的區域    function clickCall(result){      console.log(result.dec);      console.log(result.url);          }  </script></html>

效果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
狠狠躁夜夜躁人人爽天天天天97| 一本大道香蕉久在线播放29| 亚洲夜晚福利在线观看| 欧美在线视频观看免费网站| 亚洲欧美在线一区二区| 高跟丝袜欧美一区| 欧美高清视频在线观看| 欧美激情一区二区三级高清视频| 538国产精品一区二区在线| 亚洲2020天天堂在线观看| 国产亚洲精品久久久| 亚洲最新av网址| 成年无码av片在线| 国产精品美腿一区在线看| 色先锋久久影院av| 一区二区三区久久精品| 成人淫片在线看| 日产日韩在线亚洲欧美| 福利视频一区二区| 亚洲自拍偷拍区| 日本精品在线视频| 久久色精品视频| 国产成人精品视频在线观看| 福利视频第一区| 97婷婷涩涩精品一区| 美女久久久久久久久久久| 亚洲欧洲视频在线| 日韩小视频在线观看| 日韩欧美有码在线| 亚洲精品国偷自产在线99热| 韩日精品中文字幕| 97高清免费视频| 国内自拍欧美激情| 国模视频一区二区三区| 日韩av免费在线| 日日狠狠久久偷偷四色综合免费| 91av免费观看91av精品在线| 午夜精品久久久久久99热| 亚洲国产精品女人久久久| 日韩欧美国产中文字幕| 久久久久久国产精品三级玉女聊斋| 琪琪亚洲精品午夜在线| 亚洲视频欧美视频| 中文字幕欧美精品日韩中文字幕| 日本伊人精品一区二区三区介绍| 久久九九精品99国产精品| 91精品一区二区| 精品一区精品二区| 中文字幕日韩在线观看| 国产精品www网站| 欧美专区国产专区| 在线观看免费高清视频97| 久久影视电视剧凤归四时歌| 亚洲男人的天堂在线| 亚洲黄色在线看| 国产精品视频不卡| 国产精品私拍pans大尺度在线| 日韩电影视频免费| 91沈先生作品| 国产精品成人va在线观看| 久久久国产精彩视频美女艺术照福利| 国内精品400部情侣激情| 亚洲国产精品久久91精品| 欧美亚洲激情在线| 日本91av在线播放| 日韩av免费看| 亚洲人成在线电影| www.日韩系列| 久久精品久久久久久| 国模吧一区二区| 国内外成人免费激情在线视频| 欧美激情一级二级| 热久久免费国产视频| 欧美性猛交99久久久久99按摩| 欧美日韩免费在线观看| 国产成人午夜视频网址| 欧洲美女7788成人免费视频| 日韩精品在线视频| 欧美日韩一区免费| 欧美剧在线观看| 国产精品久久久久久网站| 国产一区二区三区在线观看视频| 久久五月天综合| 国产日韩专区在线| 日本人成精品视频在线| 色777狠狠综合秋免鲁丝| 最近2019中文免费高清视频观看www99| 成人性生交大片免费看视频直播| 91精品视频在线看| 欧美成人高清视频| 精品丝袜一区二区三区| 亚洲a成v人在线观看| 欧美日韩电影在线观看| 国产精品成人在线| 亚洲国产成人精品女人久久久| 欧美精品videos| 国产亚洲精品高潮| 精品偷拍一区二区三区在线看| 色伦专区97中文字幕| 亚洲色图国产精品| 51精品国产黑色丝袜高跟鞋| 欧美激情女人20p| 亚洲女人初尝黑人巨大| 91精品视频观看| 国产精品色午夜在线观看| 69国产精品成人在线播放| 国产精品一二三在线| 热门国产精品亚洲第一区在线| 日韩国产高清视频在线| 国外色69视频在线观看| 国产精品视频免费观看www| 亚洲成人久久一区| 色老头一区二区三区在线观看| 午夜精品久久久久久久久久久久| 26uuu另类亚洲欧美日本一| 欧美麻豆久久久久久中文| 国产主播在线一区| 精品国产乱码久久久久久虫虫漫画| 国产精品精品视频一区二区三区| 午夜精品久久久久久99热| 久久亚洲国产精品成人av秋霞| 国产日韩欧美综合| 亚洲欧美日韩一区在线| 成人亲热视频网站| 久久偷看各类女兵18女厕嘘嘘| 欧美日韩美女在线观看| 久久久精品网站| 国产精品高潮粉嫩av| 国模精品视频一区二区| 不卡在线观看电视剧完整版| 国产精品日日摸夜夜添夜夜av| 国产精品一久久香蕉国产线看观看| 久久久久国产精品免费网站| 成人黄色免费看| 国产丝袜一区视频在线观看| 26uuu另类亚洲欧美日本老年| 国产精品日韩欧美大师| 在线观看国产成人av片| 国产玖玖精品视频| 亚洲一区二区三区香蕉| 精品视频一区在线视频| 欧美第一黄色网| 中文字幕免费精品一区| 欧美中在线观看| 国产精品久久久久久婷婷天堂| 日韩精品极品在线观看| 国产噜噜噜噜久久久久久久久| 欧美亚洲成人精品| 国产精品吴梦梦| 亚洲无亚洲人成网站77777| 色综久久综合桃花网| 日本精品免费观看| 狠狠久久亚洲欧美专区| 欧美日本中文字幕| www.久久色.com| 欧美午夜影院在线视频| 久久久精品欧美| 亚洲精品v天堂中文字幕| 国产精品96久久久久久| 成人网在线免费观看| 国产成人免费91av在线| 欧美一区二粉嫩精品国产一线天| 精品久久久久久电影| 亚洲欧美999|