分享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 相关文章推荐
最佳的addEvent事件绑定是怎样诞生的
Oct 24 Javascript
js 3种归并操作的实例代码
Oct 30 Javascript
jQuery Ajax()方法使用指南
Nov 19 Javascript
jquery动态导航插件dynamicNav用法实例分析
Sep 06 Javascript
jQuery的deferred对象使用详解
Sep 25 Javascript
详解AngularJS中的表单验证(推荐)
Nov 17 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
Nov 02 Javascript
详解ES6系列之私有变量的实现
Nov 21 Javascript
基于JS实现前端压缩上传图片的实例代码
May 14 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
Aug 22 Javascript
在Vue项目中,防止页面被缩放和放大示例
Oct 28 Javascript
在JavaScript中如何使用宏详解
May 06 Javascript
【经典源码收藏】基于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
拼音码表的生成
2006/10/09 PHP
个人站长制做网页常用的php代码
2007/03/03 PHP
php IP及IP段进行访问限制的代码
2008/12/17 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
取得一定长度的内容,处理中文
2006/12/20 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
通过代码实例解析Pytest运行流程
2020/08/20 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
印尼在线旅游门户网站:NusaTrip
2019/11/01 全球购物
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
历史学专业毕业生求职信
2013/09/27 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
骨干教师考核方案
2014/05/09 职场文书
资金申请报告范文
2015/05/14 职场文书
卫生保健工作总结2015
2015/05/18 职场文书
贷款工作证明模板
2015/06/12 职场文书
父亲节感言
2015/08/03 职场文书
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang
用JS创建一个录屏功能
2021/11/11 Javascript