原生js拖拽实现图形伸缩效果


Posted in Javascript onFebruary 10, 2020

本文实例为大家分享了js拖拽实现图形伸缩效果的具体代码,供大家参考,具体内容如下

点击矩形的四个角和四个边实现不同的效果

原生js拖拽实现图形伸缩效果

原生js拖拽实现图形伸缩效果

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    *{
      padding: 0;
      margin:0;
    }
    .div1{
      width: 200px;
      height: 200px;
      background-color: #71e4ff;
      position: absolute;
      top: 200px;
      left: 200px;
    }
    .t,
    .b{
      width: 100%;
      height: 20px;
      background-color:#ffa2d3;
      position: absolute;
    }
    .t{
      left: 0;
      top:0;
    }
    .b{
      left: 0;
      bottom:0;
    }
    .r,
    .l{
      width: 20px;
      height: 100%;
      background-color:#ffa2d3;
      position: absolute;
    }
    .r{
      right: 0;
      top:0;
    }
    .l{
      left: 0;
      top:0;
    }
    .lt,
    .lb,
    .rt,
    .rb{
      width: 20px;
      height: 20px;
      background-color: #93ff6b;
      position: absolute;
    }
    .lt{
      left: 0;
      top:0;
    }
    .rt{
      right: 0;
      top:0;
    }
    .lb{
      left: 0;
      bottom: 0;
    }
    .rb{
      right: 0;
      bottom:0;
    }
    
  </style>
</head>
<body>
  <div class="div1" id="_div1">
    <div class="t"></div>
    <div class="r"></div>
    <div class="b"></div>
    <div class="l"></div>
    <div class="lt"></div>
    <div class="lb"></div>
    <div class="rt"></div>
    <div class="tb"></div>
  </div>
</body>
</html>
<script>
  // 获取元素
  var _div1 = document.getElementById("_div1");
  var divs = _div1.children;
  // 遍历每个可以拖拽的元素
  for(var i = 0;i < divs.length ;i++)
  {
    drag(divs[i]);
  }
  // 封装一个拖拽函数
   function drag(obj){
    obj.onmousedown = function(event){
      // 捕获事件
      var event = event || window.event;
      // 存储当前的_div1的宽高
      var divW = _div1.offsetWidth;
      var divH = _div1.offsetHeight;
      // 获得当前_div1的offsetLeft 和 offsetTop
      var divL = _div1.offsetLeft;
      var divT = _div1.offsetTop;
      // 存储鼠标按下时的位置
      var clientx = event.clientX;
      var clienty = event.clientY;
      document.onmousemove = function(event){
        var event = event || window.event;
        if(obj.className.indexOf('t') != -1){
          _div1.style.height = divH + ( clienty- event.clientY) + 'px';
          _div1.style.top = divT -( clienty- event.clientY)+ 'px';
        }
        if(obj.className.indexOf('b') != -1){
          _div1.style.height = divH + ( event.clientY -clienty ) + 'px';
        }
         if(obj.className.indexOf('r')!= -1){
          _div1.style.width = divW + ( event.clientX - clientx) + 'px';
        }
         if(obj.className.indexOf('l')!= -1){
          _div1.style.width = divW + ( clientx - event.clientX) + 'px';
          _div1.style.left = event.clientX + 'px';
        }

      }
      document.onmouseup = function(){
        document.onmousemove = null;
        document.onmouseup = null;
      }
      
    }
    
      return false;
   }
      
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
TFDN图片播放器 不错自动播放
Oct 03 Javascript
打开超链需要“确认”对话框的方法
Mar 08 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
Mar 21 Javascript
拖动table标题实现改变td的大小(css+js代码)
Apr 16 Javascript
JavaScript加强之自定义event事件
Sep 21 Javascript
JavaScript父子窗体间的调用方法
Mar 31 Javascript
AngularJS控制器之间的通信方式详解
Nov 03 Javascript
20道JS原理题助你面试一臂之力(必看)
Jul 22 Javascript
VUE兄弟组件传值操作实例分析
Oct 26 Javascript
Vue快速实现通用表单验证功能
Dec 05 Javascript
JavaScript实现轮播图效果
Oct 30 Javascript
Vue项目中使用mock.js的完整步骤
Jan 12 Vue.js
js实现单元格拖拽效果
Feb 10 #Javascript
详解Vue template 如何支持多个根结点
Feb 10 #Javascript
JavaScript canvas动画实现时钟效果
Feb 10 #Javascript
JavaScript canvas仿代码流瀑布
Feb 10 #Javascript
Vue数字输入框组件使用方法详解
Feb 10 #Javascript
JavaScript canvas实现跟随鼠标事件
Feb 10 #Javascript
JavaScript实现简易聊天对话框(加滚动条)
Feb 10 #Javascript
You might like
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
修改ligerui 默认确认按钮的方法
2016/12/27 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
js html实现计算器功能
2018/11/13 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
python实现FTP服务器服务的方法
2017/04/11 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
2017/07/22 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
Python request使用方法及问题总结
2020/04/26 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
纯css3使用vw和vh实现自适应的方法
2018/02/09 HTML / CSS
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
物流管理专业自荐信
2014/06/23 职场文书
音乐学专业求职信
2014/07/22 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书