复制代码 代码如下:
(function($){
$.fn.extend({
mydrag:function(){
var boxX = 0; //元素在页面中的横坐标
var boxY = 0; //元素在页面中的纵坐标
var dMouseX = 0; //按下鼠标时的鼠标所在位置的横坐标
var dMouseY = 0; //按下鼠标时的鼠标所在位置的纵坐标
var mMouseX = 0; //移动鼠标时的鼠标所在位置的横坐标
var mMouseY = 0; //移动鼠标时的鼠标所在位置的纵坐标
var moveLenX = 0; //存放鼠标移动的距离,横向
var moveLenY = 0; //存放鼠标移动的距离,纵向
var isMove = false; //是否拖动层的一个输助"开关"
var movingX = 0; //移动中元素的LEFT值
var movingY = 0; //移动中元素的TOP值
//可视区域最右边的值
var rightest = document.documentElement.clientWidth - $(".top").parent().outerWidth();
//可视区域最右边的值
var bottomest = document.documentElement.clientHeight - $(".top").parent().outerHeight();
//获得移动鼠标时的鼠标所在位置的坐标
var getMoveMouse = function(move){
mMouseX = move.pageX;
mMouseY = move.pageY;
}
//获得元素在页面中的当前的位置
var getbox = function(m){
boxX = $(".box").offset().left;
boxY = $(".box").offset().top;
}
//获得鼠标按下时的坐标
var getDownMouse = function(m){
dMouseX = m.pageX;
dMouseY = m.pageY;
}
//获得鼠标移动的距离值
var getMoveLen = function(){
moveLenX = mMouseX - dMouseX;
moveLenY = mMouseY - dMouseY;
}
//鼠标UP时,关闭移动,即鼠标移动也不会让元素移动;
$(document).mouseup(function(){
isMove = false;
})
//给元素的TOP绑定事件
$(this).
//按下时获得元素的坐标和当前鼠标的坐档;
mousedown(function(e){
getbox(e);
getDownMouse(e)
isMove = true;
}).
//移动时获得移动的距离,设置元素的TOP和LEFT值;
mousemove(function(e){
var $this = $(this);
getMoveMouse(e);
getMoveLen();
if(isMove){
//防止元素移出可视区域
//可视区域浏览器最左边
if(movingX<0){
$this.css({"left":0});
if(movingY<0){
$this.css({"top":0});
}else if(movingY > bottomest){
$this.css({"top":bottomest});
}else{
$this.css({"top":boxY+moveLenY});
}
}
//可视区域浏览器最上面
else if(movingY<0){
$this.css({"top":0});
if(movingX>rightest){
$this.css({"left":rightest});
}else{
$this.css({"left":boxX+moveLenX});
}
}
//可视区域浏览器最右边
else if(movingX > rightest){
$this.css({"left":rightest});
if(movingY > bottomest){
$this.css({"top":bottomest});
}else{
$this.css({"top":boxY+moveLenY});
}
}
//可视区域浏览器最下边
else if(movingY > bottomest){
$this.css({"top":bottomest});
if(movingX<0){
$this.css({"left":0});
}else{
$this.css({"left":boxX+moveLenX});
}
}
//其它情况,即在可视区域中间
else{
$this.css({"left":boxX+moveLenX,"top":boxY+moveLenY});
}
movingX = boxX+moveLenX;
movingY = boxY+moveLenY;
}
})
}
})
})(jQuery)
主要思路:
1.鼠标移动多少距离,元素就同时移动多少距离,所以要获取到鼠标移动的距离;
2.鼠标按下,并且移动,才拖动层。所以需要一个“开关”,在移动按下时打开,如果鼠标这里移动了,那么就移动层,如果这个“关闭”,那么鼠标移动时,层也不会一起移动。
3.获取层元素,在浏览器可视区域的最左、最边,最上、最下的值。并且在拖动层的过程中,把当前层的坐标值,去和这几个值,做比较,如果超过这些值。那么就不能再拖动这个方向,即把值设为最小或最大。
感觉我这些判断有点复杂,有高手指点下,怎么简化下吗?
下载DEMO
相关推荐:
SEO需要:如何提升网站排名,打造高效营销利器,seo怎么推广关键词
ChatGPT为什么用不了了?背后的真相揭秘!,ai写作专家收费吗
怎么用AI写出令人惊叹的文章?轻松搞定写作难题!
智能AI生成文章释放创作新可能
seo站内链接有什么作用,seo中网站内链的作用 ,781900ai
SEO运营是什么职业,seo运营工程师招聘 ,把ai图层改横幅
ChatGPT崩一次多久修复?揭秘背后的技术与保障,ai1818818
SEO外链建设:提升网站排名的关键策略,ai偏执
用AI写文章会不会查重率高?破解写作困扰的真相
ChatGPT页面打不开怎么办?这些解决方法让你轻松访问AI助手!,分散ai
实用AI工具:提升效率、优化生活的科技利器
文章缩写AI:高效编辑的未来之光
SEO笔记:如何打造高效的SEO策略提升网站排名,网站优化优质服务方案
ChatGPT-深度学习与自然语言处理的革命性突破,金华ai视觉锁螺丝机
【SEO优化全攻略】提升网站流量的终极秘籍,带你轻松玩转搜索引擎优化!,金融网站推广维护
SEO中权重是什么意思?让你迅速网站排名的核心秘密!,长颈鹿智能AI点读机
seo竞价做的什么工作,seo 竞价 ,office智能ai
SEO这样做,轻松引爆流量,助力企业成长,无极标准网站优化好处
OpenAIGPT:开启智能时代的语言革命,ai辣妹动漫
ChatGDP人工智能:未来科技赋能企业与个人的智能变革,如何用AI绘制人体
丹东抖音seo是什么,抖音seo引流 ,ai工具编写作业指导书
SEO学费多少钱?揭秘SEO培训的投资价值与回报!,郴州网站推广多少钱一个
SEO子-为你的网站注入流量的秘密武器,麻城网站网址优化
互联网留痕:数字时代的隐形轨迹与自我管理,灯塔网站推广包年多少钱
SEO软优化:助力网站实现流量爆发的秘密武器,延平区网页seo
SEO优化如何为网站做好关键词研究和优化,ai直通
seo要寻找什么资源,怎么找seo ,ai插画描边
SEO小白必看!从零起步SEO的秘诀,轻松提升网站排名,南京网站运营优化平台
好用的AI写作软件,让创作更高效
从语言助手到智能生活伙伴,未来的智能助手如何改变我们的生活,网站建设分站公司
seo涉及什么内容,seo主要包括 ,法医使用ai
为什么关键词太少会影响你的网络营销效果?,陕西seo网站推广工具
SEO管家:为您的网站保驾护航的智能SEO助手,网站推广作用有哪些类型
seo网站需要做什么,seo都需要做什么 ,ai怎么做喷漆效果
seo网站是什么找行者SEO,seo分析网站 ,ai图文梅花
怎么用AI写文章:高效创作的秘诀
为什么seo这么难,seo难嘛 ,ai宁中则
SEO阶段解析:从入门到精通,助你站稳搜索引擎的前沿,网站建设特定开发
SEO自行:提升网站流量的秘密武器,邹平县个人网站建设建议
AI批量文章工具,让写作变得高效与轻松,cs机器人ai
seo需要什么部门,seo主要干什么 ,ai接入仪器
怎么分辨文章是不是AI写的?五大技巧揭开真相
优化软件:让电脑性能焕然一新,提升效率的秘密武器,大理网站推广招聘信息最新
ChatGPT-4中文免费破解版:无需付费,体验最强AI助手,ai写作生成器官方下载
AI网页版本:开启智能时代的新篇章,拼音标调ai
ChatGPT模型进化历程:人工智能的智慧革命,ai 喷枪星空
未来写作新模式文章撰写AI如何助力内容创作
自动写文章的AI,提升效率的创作利器
SEO永远,数字营销的核心力量,广州seo搜索栏内容
ChatGPT免登录:轻松畅聊,无需注册,快速体验AI智能助手,眼泪ai