欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript實(shí)現(xiàn)圖片的放大縮小及拖拽功能示例

 更新時(shí)間:2019年05月14日 11:57:47   作者:辣姐什么鬼  
這篇文章主要介紹了JavaScript實(shí)現(xiàn)圖片的放大縮小及拖拽功能,結(jié)合實(shí)例形式分析了javascript鼠標(biāo)事件響應(yīng)及針對(duì)圖形元素的屬性操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了JavaScript實(shí)現(xiàn)圖片的放大縮小及拖拽功能。分享給大家供大家參考,具體如下:

實(shí)現(xiàn)效果如下:

實(shí)現(xiàn)代碼:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    div{width:400px;height:400px;overflow:hidden;position:relative;border:1px solid #000;}
    div img{position:absolute;height:100%;width:auto;cursor:move;}
  </style>
</head>
<body>
<div id="div" onmousewheel="return bbimg(this)"><img id="img" border="0" src="img/zs.jpg" /></div>
<script language="javascript">
  var params = {
    zoomVal:1,
    left: 0,
    top: 0,
    currentX: 0,
    currentY: 0,
    flag: false
  };
  //圖片縮放
  function bbimg(o){
    var o=o.getElementsByTagName("img")[0];
    params.zoomVal+=event.wheelDelta/1200;
    if (params.zoomVal >= 0.2) {
      o.style.transform="scale("+params.zoomVal+")";
    } else {
      params.zoomVal=0.2;
      o.style.transform="scale("+params.zoomVal+")";
      return false;
    }
  }
  //獲取相關(guān)CSS屬性
  var getCss = function(o,key){
    return o.currentStyle? o.currentStyle[key] : document.defaultView.getComputedStyle(o,false)[key];
  };
  //拖拽的實(shí)現(xiàn)
  var startDrag = function(bar, target, callback){
    if(getCss(target, "left") !== "auto"){
      params.left = getCss(target, "left");
    }
    if(getCss(target, "top") !== "auto"){
      params.top = getCss(target, "top");
    }
    //o是移動(dòng)對(duì)象
    bar.onmousedown = function(event){
      params.flag = true;
      if(!event){
        event = window.event;
        //防止IE文字選中
        bar.onselectstart = function(){
          return false;
        }
      }
      var e = event;
      params.currentX = e.clientX;
      params.currentY = e.clientY;
    };
    document.onmouseup = function(){
      params.flag = false;
      if(getCss(target, "left") !== "auto"){
        params.left = getCss(target, "left");
      }
      if(getCss(target, "top") !== "auto"){
        params.top = getCss(target, "top");
      }
    };
    document.onmousemove = function(event){
      var e = event ? event: window.event;
      if(params.flag){
        var nowX = e.clientX, nowY = e.clientY;
        var disX = nowX - params.currentX, disY = nowY - params.currentY;
        target.style.left = parseInt(params.left) + disX+ "px";
        target.style.top = parseInt(params.top) + disY+ "px";
        if (typeof callback == "function") {
          callback((parseInt(params.left) || 0) + disX, (parseInt(params.top) || 0) + disY);
        }
        if (event.preventDefault) {
          event.preventDefault();
        }
        return false;
      }
    }
  };
  startDrag(document.getElementById("img"),document.getElementById("img"))
</script>
</body>
</html>

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript圖片操作技巧大全》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript運(yùn)動(dòng)效果與技巧匯總》、《JavaScript動(dòng)畫特效與技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Bootstrap滾動(dòng)監(jiān)聽(Scrollspy)插件詳解

    Bootstrap滾動(dòng)監(jiān)聽(Scrollspy)插件詳解

    滾動(dòng)監(jiān)聽插件是用來根據(jù)滾動(dòng)條所處在的位置自動(dòng)更新導(dǎo)航項(xiàng)目, 顯示導(dǎo)航項(xiàng)目高亮顯示。這篇文章主要介紹了Bootstrap滾動(dòng)監(jiān)聽(Scrollspy)插件的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • webpack使用Symbol.toStringTag(Symbol.toStringTag用法)

    webpack使用Symbol.toStringTag(Symbol.toStringTag用法)

    Symbol.toStringTag是一個(gè)內(nèi)置 symbol,它通常作為對(duì)象的屬性鍵使用,對(duì)應(yīng)的屬性值應(yīng)該為字符串類型,這個(gè)字符串用來表示該對(duì)象的自定義類型標(biāo)簽,這篇文章主要介紹了webpack使用Symbol.toStringTag(Symbol.toStringTag用法),需要的朋友可以參考下
    2024-02-02
  • javascript完整操作Table的增加行,刪除行的列子大全

    javascript完整操作Table的增加行,刪除行的列子大全

    非常漂亮的js操作table行代碼函數(shù)。比較方便
    2008-10-10
  • bootstrap table.js動(dòng)態(tài)填充單元格數(shù)據(jù)的多種方法

    bootstrap table.js動(dòng)態(tài)填充單元格數(shù)據(jù)的多種方法

    這篇文章主要為大家詳細(xì)介紹了bootstrap table.js填充單元格數(shù)據(jù)的多種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • javascript (用setTimeout而非setInterval)

    javascript (用setTimeout而非setInterval)

    javascript (用setTimeout而非setInterval)如果用setInterval 可能出現(xiàn) 下次調(diào)用會(huì)在前一次調(diào)用前調(diào)用
    2011-12-12
  • AI小程序之語音聽寫來了,十分鐘掌握百度大腦語音聽寫全攻略

    AI小程序之語音聽寫來了,十分鐘掌握百度大腦語音聽寫全攻略

    語音識(shí)別極速版能將60秒以內(nèi)的完整音頻文件識(shí)別為文字,本文主要介紹采用百度語音識(shí)別,實(shí)現(xiàn)小程序的聽寫功能,感興趣的同學(xué)可以來了解一下
    2020-03-03
  • 微前端qiankun沙箱實(shí)現(xiàn)源碼解讀

    微前端qiankun沙箱實(shí)現(xiàn)源碼解讀

    這篇文章主要為大家介紹了微前端qiankun沙箱實(shí)現(xiàn)的源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • thinkjs 文件上傳功能實(shí)例代碼

    thinkjs 文件上傳功能實(shí)例代碼

    ThinkJS 是一款面向未來開發(fā)的 Node.js 框架,整合了大量的項(xiàng)目最佳實(shí)踐,讓企業(yè)級(jí)開發(fā)變得如此簡單、高效。接下來通過本文給大家分享thinkjs 文件上傳功能,需要的朋友參考下吧
    2017-11-11
  • JavaScript?編寫枚舉的最有效方法分享

    JavaScript?編寫枚舉的最有效方法分享

    這篇文章主要介紹了JavaScript?編寫枚舉的最有效方法分享,JavaScript語言本身不支持枚舉。如果我們想模擬枚舉,我們可以使用一個(gè)對(duì)象。更多相關(guān)內(nèi)容感興趣的小伙伴可以參考一下
    2022-06-06
  • JavaScript優(yōu)雅處理對(duì)象的6種方法

    JavaScript優(yōu)雅處理對(duì)象的6種方法

    大家好,本篇文章主要講的是JavaScript優(yōu)雅處理對(duì)象的6種方法,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下哦,方便下次瀏覽
    2021-12-12

最新評(píng)論