原生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 相关文章推荐
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
Aug 14 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
Oct 20 Javascript
jQuery实现的简单悬浮层功能完整实例
Jan 23 Javascript
javascript常用的设计模式
Feb 09 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
Apr 25 jQuery
用原生JS实现简单的多选框功能
Jun 12 Javascript
vue2.0全局组件之pdf详解
Jun 26 Javascript
web前端页面生成exe可执行文件的方法
Feb 08 Javascript
vue项目tween方法实现返回顶部的示例代码
Mar 02 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
Oct 12 Javascript
Vue源码解析之数组变异的实现
Dec 04 Javascript
react native 原生模块桥接的简单说明小结
Feb 26 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中::、-&amp;gt;、self、$this几种操作符的区别介绍
2013/04/24 PHP
php通过curl模拟登陆DZ论坛
2015/05/11 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
用JS写的一个TableView控件代码
2010/01/23 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
js评分组件使用详解
2017/06/06 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
javascript实现智能手环时间显示
2020/09/18 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
python截取两个单词之间的内容方法
2018/12/25 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
Python3爬虫关于代理池的维护详解
2020/07/30 Python
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
迷你西餐厅创业计划书范文
2013/12/31 职场文书
给同事的道歉信
2014/01/11 职场文书
见习报告格式范文
2014/11/08 职场文书
2014年度个人总结范文
2015/03/09 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
速龙x4-860k处理器相当于i几
2022/04/20 数码科技