本文主要介绍了js实现横向拖拽导航条功能的方法。具有很好的参考价值,下面一起来看下吧
效果如下:
代码如下:
nbsp;HTML>p横向拖拽排序 body, p { padding: 0px; margin: 0px; } .box { position: relative; margin-left: 15px; padding: 10px; padding-right: 0px; width: 810px; border: blue solid 1px; } .box ul{ list-style: none; overflow: hidden; padding: 0; margin:0; } .drag { float: left; border: #000 solid 1px; text-align: center; } .box ul li a{ display: block; padding: 10px 25px; } .drag-dash { position: absolute; border: #000 solid 1px; background: #ececec; } .dash { float: left; border: 1px solid transparent; }p横向拖拽排序
登录后复制 导航一 导航二导航 导航导航导航三 导航导航四 导五 $(document).ready(function () { var range = {x: 0, y: 0};//鼠标元素偏移量 var lastPos = {x: 0, y: 0, x1: 0, y1: 0}; //拖拽对象的四个坐标 var tarPos = {x: 0, y: 0, x1: 0, y1: 0}; //目标元素对象的坐标初始化 var thep = null, move = false; var choose = false; //拖拽对象 拖拽状态 选中状态 var thepId = 0, thepHeight = 0, thepHalf = 0; var tarFirstY = 0; //拖拽对象的索引、高度、的初始化。 var tarp = null, tarFirst, tempp; //要插入的目标元素的对象, 临时的虚线对象 var initPos = {x: 0, y: 0}; var thepWidth;//拖拽对象的宽度 $(“.drag”).each(function () { $(this).mousedown(function (event) { choose = true; //拖拽对象 thep = $(this); //记录拖拽元素初始位置 initPos.x = thep.position().left; initPos.y = thep.position().top; //鼠标元素相对偏移量 range.x = event.pageX – thep.position().left; range.y = event.pageY – thep.position().top; thepId = thep.index(); thepWidth = thep.width(); thepHalf = thepWidth / 2; thep.removeClass(“drag”); thep.addClass(“drag-dash”); thep.css({left: initPos.x + 'px', top: initPos.y + 'px'}); // 创建新元素 插入拖拽元素之前的位置(虚线框) $(“
“).insertBefore(thep); tempp = $(“.dash”); $(“.dash”).css(“width” , thepWidth); return false }); }); $(document).mouseup(function (event) { if (!choose) { return false; } if (!move) { //恢复对象的初始样式 thep.removeClass(“drag-dash”); thep.addClass(“drag”); tempp.remove(); // 删除新建的虚线p choose = false; return false; } thep.insertBefore(tempp); // 拖拽元素插入到 虚线p的位置上 //恢复对象的初始样式 thep.removeClass(“drag-dash”); thep.addClass(“drag”); tempp.remove(); // 删除新建的虚线p move = false; choose = false; return false }).mousemove(function (event) { if (!choose) {return false} move = true; lastPos.x = event.pageX – range.x; lastPos.y = event.pageY – range.y; lastPos.x1 = lastPos.x + thepWidth; // 拖拽元素随鼠标移动 thep.css({left: lastPos.x + 'px', top: lastPos.y + 'px'}); // 拖拽元素随鼠标移动 查找插入目标元素 var $main = $('.drag'); // 局部变量:按照重新排列过的顺序 再次获取 各个元素的坐标, $main.each(function () { tarp = $(this); tarPos.x = tarp.position().left; tarPos.y = tarp.position().top; tarPos.x1 = tarPos.x + tarp.width() / 2; tarFirst = $main.eq(0); // 获得第一个元素 tarFirstX = tarFirst.position().left + thepHalf; // 第一个元素对象的中心纵坐标 //拖拽对象 移动到第一个位置 if (lastPos.x = tarPos.x – thepHalf && lastPos.x1 >= tarPos.x1) { tempp.insertAfter(tarp); } }); return false }); });
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
JS和CSS实现鼠标经过弹出一个带缓冲动画渐变效果DIV框
利用JS实现随页面滚动显示/隐藏窗口固定位置元素
以上就是如何利用js实现横向拖拽导航条功能的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2748645.html