原生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 相关文章推荐
ext for eclipse插件安装方法
Apr 27 Javascript
javascript加号&quot;+&quot;的二义性说明
Mar 04 Javascript
js对table的td进行相同内容合并示例详解
Dec 27 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
Mar 05 Javascript
js获取checkbox复选框选中的选项实例
Aug 24 Javascript
推荐25个超炫的jQuery网格插件
Nov 28 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
Apr 16 Javascript
Highcharts入门之基本属性
Aug 02 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
Apr 12 Javascript
Vue.js 2.0学习教程之从基础到组件详解
Apr 24 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
Mar 15 Javascript
Vue实现Header渐隐渐现效果的实例代码
Nov 05 Javascript
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
php实现cc攻击防御和防止快速刷新页面示例
2014/02/13 PHP
跟我学Laravel之路由
2014/10/15 PHP
php实现对象克隆的方法
2015/06/20 PHP
PHP新建类问题分析及解决思路
2015/11/19 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
php fread函数使用方法总结
2019/05/28 PHP
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
wxpython 学习笔记 第一天
2009/02/09 Python
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
django初始化数据库的实例
2018/05/27 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
python适合做数据挖掘吗
2020/06/16 Python
高职教师岗位职责
2013/12/24 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
环保标语大全
2014/06/12 职场文书
管理标语大全
2014/06/24 职场文书
介绍信格式样本
2015/05/05 职场文书
居住证明范文
2015/06/17 职场文书
vue+echarts实现多条折线图
2022/03/21 Vue.js