分享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+XMLHttpRequest+asp.net无刷新读取数据库数据
Aug 09 Javascript
JS俄罗斯方块,包含完整的设计理念
Dec 11 Javascript
window.navigate 与 window.location.href 的使用区别介绍
Sep 21 Javascript
javascript创建数组之联合数组的使用方法示例
Dec 26 Javascript
jQuery 全选 全部选 反选 实现代码
Aug 17 Javascript
jQuery实现的自适应焦点图效果完整实例
Aug 24 Javascript
JS实现的驼峰式和连字符式转换功能分析
Dec 21 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
Jan 23 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
Nov 06 Javascript
Vue v-for循环之@click点击事件获取元素示例
Nov 09 Javascript
node.JS事件机制与events事件模块的使用方法详解
Feb 06 Javascript
Vue+webpack实现懒加载过程解析
Feb 17 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
第十五节--Zend引擎的发展
2006/11/16 PHP
php创建多级目录代码
2008/06/05 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
JS实现DIV高度自适应窗口示例
2017/02/16 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
JavaScript中最常见的三个面试题解析
2017/03/04 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
JS判断数组四种实现方法详解
2020/06/29 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
python基于windows平台锁定键盘输入的方法
2015/03/05 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
使用python3实现操作串口详解
2019/01/01 Python
python 整数越界问题详解
2019/06/27 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
大学生职业规划范文:象牙塔生活的四年计划
2014/01/14 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
校运会宣传稿大全
2015/07/23 职场文书
升学宴学生致辞
2015/07/27 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
PostgreSQL数据库创建并使用视图以及子查询
2022/04/11 PostgreSQL
解决vue-router的beforeRouteUpdate不能触发
2022/04/14 Vue.js