分享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 相关文章推荐
使用Modello编写JavaScript类
Dec 22 Javascript
Javascript面向对象之四 继承
Feb 08 Javascript
下载文件个别浏览器文件名乱码解决办法
Mar 19 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
Aug 21 Javascript
在AngularJS框架中处理数据建模的方式解析
Mar 05 Javascript
对Js OOP编程 创建对象的一些全面理解
Jul 26 Javascript
js实现文字无缝向上滚动
Feb 16 Javascript
Angular如何引入第三方库的方法详解
Jul 13 Javascript
关于微信公众号开发无法支付的问题解决
Dec 28 Javascript
VSCode launch.json配置详细教程
Jun 18 Javascript
js实现随机点名功能
Dec 23 Javascript
详解Vue的列表渲染
Nov 20 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
PHP中实现中文字符进制转换原理分析
2011/12/06 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
三星法国官方网站:Samsung法国
2019/10/31 全球购物
高一家长会邀请函
2014/01/12 职场文书
安全责任书范文
2014/03/12 职场文书
应聘教师自荐书
2014/06/16 职场文书
干部个人对照检查材料
2014/08/25 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
保留意见审计报告
2015/06/05 职场文书
运动会加油稿50字
2015/07/21 职场文书
遗嘱范文
2015/08/07 职场文书
感恩老师主题班会
2015/08/12 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
解决WINDOWS电脑开机后桌面没有任何图标
2022/04/09 数码科技