分享jQuery网页元素拖拽插件


Posted in Javascript onDecember 01, 2020

效果说明:配合已有CSS样式,载入插件后,网页元素可以随意在窗口内拖拽,设置了原位置半透明和拖拽半透明的效果选项,可根据需要选择。另外,当页面上有多个可拖拽元素时,可以载入另外一个用于设置z-index的插件,模拟Windows窗口点击置顶效果。

分享jQuery网页元素拖拽插件

js/jquery.jLdraggable.js:

;(function($){
 $.fn.extend({
 "jLzindex" : function(){ //用于判断和设置各个对话框的z-index
 var $dragIndex = $(this);
 var arrzIndex = new Array();
 for(var i=0; i < $dragIndex.length; i++){ //初始化数组元素值,并按拖拽项顺序设置z-index值
 var zIdxNum = 10000 - i - i -2;
 arrzIndex[i] = {"getId":"drag" + ($dragIndex.length - i),"zIdx":zIdxNum};
 $("#drag" + ($dragIndex.length - i)).css("z-index",zIdxNum);
 }
 $dragIndex.mousedown(function(){
 var i = 0;
 var dIndex = 0;
 while(arrzIndex[i]){ //找到当前点击项在数组里的下标
 if(arrzIndex[i].getId == $(this).attr("id")){ dIndex = i;}
 i++;
 }
 for(var i = dIndex; i >=0; i--){ //把点击项移至数组第一位,其他项后移
 if(i > 0){
 arrzIndex[i].getId = arrzIndex[i-1].getId;
 $("#" + arrzIndex[i].getId).css("z-index",arrzIndex[i].zIdx);
 } else{
 arrzIndex[i].getId = $(this).attr("id");
 $("#" + arrzIndex[i].getId).css("z-index",arrzIndex[i].zIdx);
 }
 }
 });
 },
 "jLdraggable" : function(mod){ //拖拽插件
 var model = mod;
 var draggable = false; 
 var $drag = $(this);
 $drag.find(".dragBar").mousedown(function(e){
 draggable = true;
 var mouseLeft = e.pageX - $drag.find(".dragBar").offset().left; //鼠标在拖拽区域中的横向距离
 var mouseTop = e.pageY - $drag.find(".dragBar").offset().top; //鼠标在拖拽区域中的横向距离
 if(model == "cFade"){ //原位置元素半透明
 $drag.clone(false).appendTo("body").addClass("dragShadow").fadeTo(0,0.2).css("z-index",parseInt($drag.css("z-index")) - 1);
 } else if(model == "dFade"){ //跟随鼠标元素半透明
 $drag.clone(false).appendTo("body").addClass("dragShadow").css("z-index",parseInt($drag.css("z-index")) - 1);
 $drag.fadeTo(0,0.2);
 }
 $(document).mousemove(function(e){
 if(draggable){
 var winWidth = $(window).width();
 var winHeight = $(window).height();
 var dragLeft = e.pageX - mouseLeft;
 var dragTop = e.pageY - mouseTop;
 
 //拖拽框不能超出窗口边界
 if(dragLeft < 0){dragLeft = 0;}
 if(dragLeft + $drag.width() > winWidth){
 dragLeft = winWidth - $drag.width();
 }
 if(dragTop < 0){dragTop = 0;}
 if(dragTop + $drag.height() > winHeight){
 dragTop = winHeight - $drag.height();
 }
 
 $drag.css("left",dragLeft + "px");
 $drag.css("top",dragTop + "px");
 } else{
 return false;
 }
 });
 });
 $(document).mouseup(function(){
 draggable = false;
 $(".dragShadow").remove();
 if(model == "dFade"){
 $drag.fadeTo(0,1); 
 }
 });
 }
 })
})(jQuery)

index.html:

<script type="text/javascript" src="js/jquery.min.js"></script> 
<script type="text/javascript" src="js/jquery.jLdraggable.js"></script> 
<script type="text/javascript">
$(document).ready(function(){
 $("#drag1").jLdraggable(); //无参数,没有影子
 $("#drag2").jLdraggable("cFade"); //cFade,定义原位置半透明阴影
 $("#drag3").jLdraggable("dFade"); //dFade,定义跟随鼠标的半透明阴影
 $(".dragIndex").jLzindex(); //多个窗口的z-index处理
});
</script>
<style type="text/css">

.dragTitle{
 width:120px;
 height:27px;
 background:url(images/drag_01.jpg);
 cursor:move;
}
.dragContent{
 width:120px;
 height:73px;
 background:url(images/drag_02.jpg);
 line-height:73px;
 text-align:center;
}

#drag1{
 width:120px; 
 position:absolute; 
 left:10px; 
 top:10px;
}
#drag2{
 width:120px; 
 position:absolute; 
 left:90px; 
 top:90px;
}
#drag3{
 width:120px; 
 position:absolute; 
 left:170px; 
 top:170px;
}
</style>
<div id="drag1" class="dragIndex">
 <div class="dragBar dragTitle"></div>
 <div class="dragContent">无参数</div>
</div>
<div id="drag2" class="dragIndex">
 <div class="dragBar dragTitle"></div>
 <div class="dragContent">原位半透明</div>
</div>
<div id="drag3" class="dragIndex">
 <div class="dragBar dragTitle"></div>
 <div class="dragContent">拖拽半透明</div>
</div>

精彩专题分享:JavaScript拖拽特效 jQuery拖拽特效

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

Javascript 相关文章推荐
javascript原生和jquery库实现iframe自适应高度和宽度
Jul 18 Javascript
JS获得选取checkbox整行数据的方法
Jan 28 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
May 28 Javascript
利用vue-router实现二级菜单内容转换
Nov 30 Javascript
详解vue-router2.0动态路由获取参数
Jun 14 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
Apr 10 Javascript
解决vue select当前value没有更新到vue对象属性的问题
Aug 30 Javascript
JS异步执行结果获取的3种解决方式
Feb 19 Javascript
vue项目中仿element-ui弹框效果的实例代码
Apr 22 Javascript
express框架中使用jwt实现验证的方法
Aug 25 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
Jan 02 Javascript
vue3使用vue-count-to组件的实现
Dec 25 Vue.js
【经典源码收藏】基于jQuery的项目常见函数封装集合
Jun 07 #Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
Jun 07 #Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
Apr 20 #Javascript
Javascript之Date对象详解
Jun 07 #Javascript
批量下载对路网图片并生成html的实现方法
Jun 07 #Javascript
javascript之Boolean类型对象
Jun 07 #Javascript
jQuery简单实现仿京东分类导航层效果
Jun 07 #Javascript
You might like
浅析PHP水印技术
2007/02/14 PHP
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
PHP反射学习入门示例
2019/06/14 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
2021/03/09 PHP
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
2015/03/30 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
Angular的模块化(代码分享)
2016/12/26 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
vue实现PC端分辨率适配操作
2020/08/03 Javascript
python数据结构之图的实现方法
2015/07/08 Python
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Python 将pdf转成图片的方法
2018/04/23 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
详解Python的循环结构知识点
2019/05/20 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
python yield和Generator函数用法详解
2020/02/10 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
大学生咖啡店创业计划书
2014/01/21 职场文书
学生党员的自我评价范文
2014/03/01 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
社区党员干部承诺书
2015/05/04 职场文书
男人帮观后感
2015/06/18 职场文书
Python matplotlib绘制雷达图
2022/04/13 Python