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 相关文章推荐
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
Dec 23 Javascript
防止xss和sql注入:JS特殊字符过滤正则
Apr 18 Javascript
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
Jan 13 Javascript
再谈Jquery Ajax方法传递到action(补充)
May 12 Javascript
20条学习javascript的编程规范的建议
Nov 28 Javascript
移动设备web开发首选框架:zeptojs介绍
Jan 29 Javascript
js print打印网页指定区域内容的简单实例
Nov 01 Javascript
解决vue页面DOM操作不生效的问题
Mar 17 Javascript
详解vue-cli 2.0配置文件(小结)
Jan 14 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
Mar 22 Javascript
微信小程序实现单列下拉菜单效果
Apr 25 Javascript
微信小程序一周时间表功能实现
Oct 17 Javascript
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
第十二节--类的自动加载
2006/11/16 PHP
php代码书写习惯优化小结
2013/06/20 PHP
php中过滤非法字符的具体实现
2013/10/29 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
jQuery Ajax异步处理Json数据详解
2013/11/05 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
微信小程序 动画的简单实例
2017/10/12 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
mac使用python识别图形验证码功能
2020/01/10 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
Python爬虫+Tkinter制作一个翻译软件的示例
2021/02/20 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
大学生预备党员自我评价分享
2013/11/16 职场文书
《与象共舞》教学反思
2014/02/24 职场文书
会计学毕业生求职信
2014/06/25 职场文书
党员对照检查材料整改措施思想汇报
2014/09/26 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
2015年财务部工作总结
2015/04/10 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
话题作文之呼唤
2019/12/18 职场文书
pytorch损失反向传播后梯度为none的问题
2021/05/12 Python
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技