分享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 相关文章推荐
struts2 jquery 打造无限层次的树
Oct 23 Javascript
jquery动态添加删除一行数据示例
Jun 12 Javascript
jQuery实现下滑菜单导航效果代码
Aug 25 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
May 04 Javascript
设计模式中的组合模式在JavaScript程序构建中的使用
May 18 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
Sep 04 Javascript
轻松掌握JavaScript状态模式
Sep 07 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
Nov 15 Javascript
详解Vue中一种简易路由传参办法
Sep 15 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
Dec 07 Javascript
在nginx上部署vue项目(history模式)的方法
Dec 28 Javascript
javascript实现的时间格式加8小时功能示例
Jun 13 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
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
DEFER怎么用?
2006/07/01 Javascript
表单元素事件 (Form Element Events)
2009/07/17 Javascript
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
python实现数据写入excel表格
2018/03/25 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
HTML5 Canvas实现放大镜效果示例
2020/03/25 HTML / CSS
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
美国战术品牌:5.11 Tactical
2019/05/01 全球购物
积极分子思想汇报
2014/01/04 职场文书
国旗下演讲稿
2014/05/08 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
劳模事迹材料范文
2014/12/24 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL
react 路由Link配置详解
2021/11/11 Javascript