产品需求,需要用到对div(dom)进行拖拽缩放操作,看到有好多插件,要么依赖jQuery,要么文件太大。

封装了一个插件,不压缩状态下5KB。

html

<!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>demo</title>
<style>
* {
margin: 0;
padding: 0;
} html,
body {
width: 100%;
height: 100%;
} .box {
width: 200px;
height: 200px;
border: 1px dashed #ccc;
position: absolute;
left: 50px;
top: 50px;
} .content {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
font-size: 28px;
} .dragHandle {
width: 15px;
height: 15px;
border-radius: 50%;
background: #000;
position: absolute;
left: 0;
top: -15px
} .resizeHandle {
display: block;
position: absolute;
width: 10px;
height: 10px;
border-right: 2px solid #b2b2b2;
border-bottom: 2px solid #b2b2b2;
right: 0px;
bottom: 0px;
overflow: hidden;
cursor: nw-resize;
}
</style>
</head> <body>
<div class="box">
<div class="content">
Candy
</div>
<div class="dragHandle"> </div>
<div class="resizeHandle"> </div>
</div>
</body> </html>
<script src="./drag.js"> </script>
<script>
//父元素相对定位 relative
//当前拖动元素绝对定位 absolute
let elem = document.querySelector(".box")
let dragHandle = document.querySelector(".dragHandle")
let resizeHandle = document.querySelector(".resizeHandle")
let drag = new Draggable(elem, dragHandle, resizeHandle, true, (dragStyle) => {
console.log("当前元素现在的位置",dragStyle)
}, (resizeStyle) => {
console.log("当前元素现在的宽高",resizeStyle)
});
</script>

js在github上,顺便点个星吧,谢谢啦:

github地址:https://github.com/1096121120/Draggable

骚年,我看你骨骼惊奇,有撸代码的潜质,这里有324.57GB前端学习资料传授于你!什么,你不信???

先随便看几个图:





肯定没看够。再来个GIF图热个身???


那么问题来了,如果你也想入坑前端或者学习更多技术,广交天下朋友(基友),认识更多有趣的灵魂,和沙雕网友在线斗图,撩更多小姐姐的话,欢迎加入前端交流群鸭~

扫二维码加为好友即可拉你入群获取学习资料哦。

div/dom元素拖拽缩放插件,纯js实现拖拽缩放,不依赖jQuery~的更多相关文章

  1. jQuery字体缩放缩放插件zoomFontSize.js

    插件描述:jQuery字体缩放缩放插件zoomFontSize.js根据父类进行百分比缩放,兼容性如下: 使用方法 body 的class属性 添加 changbody_fontSize 而且整个页面 ...

  2. baguetteBox.js响应式画廊插件(纯JS)

    baguetteBox.js baguetteBox.js 是一个简单和易于使用lightbox纯JavaScript脚本,拥有图像放大缩小并带有相应的CSS3过度,并能在触摸屏等设备上完美展示. D ...

  3. Layer获取iframe的dom元素及调用iframe页的js方法

    1. 父页面点击第一个按钮触发,获取子页面中的body元素,调用子页面中定义的js方法 yes : function(index,layero){ //获取iframe的body元素 var body ...

  4. kPagination纯js实现分页插件

    kPagination分页插件 纯js分页插件,压缩版本~4kb,样式可以自定义 demo 使用方法 <div id="pagination"></div> ...

  5. 使用dom元素和jquery元素实现简单增删改的练习

    软件开发实际就是数据的增删改查,javascript前端开发也不例外.今天学了jquery框架的简单使用.于是用它实现简单的增删改,接着也用原始的javascript实现同样的功能,以便看出jquer ...

  6. 动态修改 dom 元素的伪类样式

    最近写代码,需要修改伪类的 content 属性,不想定义两个样式进行切换,而是直接通过 js 进行修改. html 中的伪类(如 a:hover / a:link / class::before / ...

  7. 简单的jquery进度条插件LineProgressbar.js,myProgress.js

    参考   http://www.lanrenzhijia.com/jquery/4121.html demo下载 <script src="js/jquery.lineProgress ...

  8. jQuery支持移动Mobile的DOM元素移动和缩放插件

    jQuery Panzoom是一款很有用的HTML DOM元素平移和缩放jQuery和CSS3插件. Panzoom利用CSS transforms 和 matrix函数来为浏览器进行硬件(GPU)加 ...

  9. 纯js实现DIV拖拽

    写代码的时候遇到需要对绝对布局的div进行拖拽的功能,起初为了省事直接在网上扒拉了一番,看到大神张鑫旭的一篇文章<JavaScript实现最简单的拖拽效果>,便直接拿来使用(膜拜大神).但 ...

随机推荐

  1. 1015 Reversible Primes (20 分)

    A reversible prime in any number system is a prime whose "reverse" in that number system i ...

  2. 包格式及IP地址,网络层协议

    包格式及IP地址,网络层协议 案例1:配置静态路由 案例2:配置浮动路由 案例3:配置多路由的静态路由 案例4:配置默认路由 1 案例1:配置静态路由 1.1 问题 配置路由接口IP地址并通过静态路由 ...

  3. Nordic nRF52820超低功耗蓝牙5.2 SoC芯片-低端无线连接方案首选

    nRF52820是功耗超低的低功耗蓝牙 (Bluetooth Low Energy /Bluetooth LE).蓝牙mesh.Thread.Zigbee和2.4 GHz专有低端无线连接解决方案.nR ...

  4. pm2 开机启动egg项目

    1.在服务器上安装PM2 npm install pm2 -g 2.对PM2进行更新 pm2 update 3.进入服务器中egg项目更目录,并新建server.js文件,并在其中写入以下代码 con ...

  5. MTK Android 计算器Calculator输入暗码!77!+,启动工厂测试apk

    Android8.0 计算器Calculator输入暗码!77!+,启动工厂测试apk 路径: packages/apps/ExactCalculator/src/com/android/calcul ...

  6. Flask 入门(十)

    flask 中的 db.relationship() 上文提到的方法,也可以找到狗的主人,但是,方便吗?,如果一个人有多只狗呢? 承接上文,修改main.py中的代码如下: #encoding:utf ...

  7. Array(数组)对象-->concat() 方法

    1.定义和用法 concat() 方法用于连接两个或多个字符串. 语法: string.concat(string1, string2, ..., stringX) 举例: var str1='hel ...

  8. P1352 没有上司的舞会&&树形DP入门

    https://www.luogu.com.cn/problem/P1352 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的 ...

  9. EFCore.Sharding(EFCore开源分表框架)

    EFCore.Sharding(EFCore开源分表框架) 简介 引言 开始 准备 配置 使用 按时间自动分表 性能测试 其它简单操作(非Sharing) 总结 简介 本框架旨在为EF Core提供S ...

  10. Word文档创建目录

    一.以设置两级目录为例: 1.设置两个标题,标题1对应第一级目录,标题2对应第二级目录. 点击标题1,点击修改: 设置好样式和格式: 同理设置标题2. 2.创建多级目录: 选择级别1,关联到标题1,设 ...