JavaScript实现图片的放大缩小及拖拽功能示例


Posted in Javascript onMay 14, 2019

本文实例讲述了JavaScript实现图片的放大缩小及拖拽功能。分享给大家供大家参考,具体如下:

实现效果如下:

JavaScript实现图片的放大缩小及拖拽功能示例

实现代码:

<!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;
    }
  }
  //获取相关CSS属性
  var getCss = function(o,key){
    return o.currentStyle? o.currentStyle[key] : document.defaultView.getComputedStyle(o,false)[key];
  };
  //拖拽的实现
  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是移动对象
    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>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Javascript调用XML制作连动下拉列表框
Jun 25 Javascript
鼠标拖拽移动子窗体的JS实现
Feb 25 Javascript
JavaScript使用slice函数获取数组部分元素的方法
Apr 06 Javascript
jQuery的几个我们必须了解的特点
May 03 Javascript
JS绘制生成花瓣效果的方法
Aug 05 Javascript
JavaScript进阶练习及简单实例分析
Jun 03 Javascript
详解Js模板引擎(TrimPath)
Nov 22 Javascript
jquery请求servlet实现ajax异步请求的示例
Jun 03 jQuery
详解Vue.js之视图和数据的双向绑定(v-model)
Jun 23 Javascript
layUI实现前端分页和后端分页
Jul 27 Javascript
关于JavaScript中异步/等待的用法与理解
Nov 18 Javascript
基于vue+echarts数据可视化大屏展示的实现
Dec 25 Vue.js
fastadmin中调用js的方法
May 14 #Javascript
vue+elementUI实现表单和图片上传及验证功能示例
May 14 #Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
May 14 #Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
May 14 #Javascript
详解jenkins自动化部署vue
May 14 #Javascript
基于JS实现前端压缩上传图片的实例代码
May 14 #Javascript
JavaScript如何实现元素全排列实例代码
May 14 #Javascript
You might like
PHP企业级应用之常见缓存技术篇
2011/01/27 PHP
PHP 转义使用详解
2013/07/15 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
$.format,jquery.format 使用说明
2011/07/13 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
Jquery遍历select option和添加移除option的实现方法
2016/08/26 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
详解Vue组件之作用域插槽
2018/11/22 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
python3安装speech语音模块的方法
2018/12/24 Python
Django中多种重定向方法使用详解
2019/07/17 Python
python 三元运算符使用解析
2019/09/16 Python
python3实现单目标粒子群算法
2019/11/14 Python
python用什么编辑器进行项目开发
2020/06/17 Python
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
2013/04/24 面试题
高中班长自我鉴定
2013/12/20 职场文书
教师档案管理制度
2014/01/23 职场文书
调解员先进事迹材料
2014/02/07 职场文书
浪漫婚礼主持词
2014/03/14 职场文书
小班下学期评语
2014/05/04 职场文书
禁烟标语大全
2014/06/11 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
2014年度工作总结报告
2014/12/15 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
教师教育心得体会
2016/01/19 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript