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检查日期格式的函数[比较全]
Oct 17 Javascript
jQuery Ajax提交表单查询获得数据实例代码
Sep 19 Javascript
js 固定悬浮效果实现思路代码
Aug 02 Javascript
js实现的动画导航菜单效果代码
Sep 10 Javascript
JavaScript如何实现组合列表框中元素移动效果
Mar 01 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
Nov 02 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
Mar 08 Javascript
微信小程序url传参写变量的方法
Aug 09 Javascript
react 国际化的实现代码示例
Sep 14 Javascript
JavaScript循环遍历你会用哪些之小结篇
Sep 28 Javascript
Vue实现类似Spring官网图片滑动效果方法
Mar 01 Javascript
详解vue.js移动端配置flexible.js及注意事项
Apr 10 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
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
vue实现按钮切换图片
2021/01/20 Vue.js
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
python实现用户答题功能
2018/01/17 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
用Python在Excel里画出蒙娜丽莎的方法示例
2020/04/28 Python
python中实现栈的三种方法
2020/12/19 Python
java字符串格式化输出实例讲解
2021/01/06 Python
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
西尔斯百货官网:Sears
2016/09/06 全球购物
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
程序员机试试题汇总
2012/03/07 面试题
校园元旦活动总结
2014/07/09 职场文书
工作违纪检讨书范文
2015/01/26 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
银行稽核岗位职责
2015/04/13 职场文书
学校德育工作总结2015
2015/05/11 职场文书
结婚典礼主持词
2015/06/29 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
Minikube搭建Kubernetes集群
2022/03/31 Servers