最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

如何利用js实现横向拖拽导航条功能

来源:动视网 责编:小采 时间:2020-11-27 19:35:03
文档

如何利用js实现横向拖拽导航条功能

如何利用js实现横向拖拽导航条功能:本文主要介绍了js实现横向拖拽导航条功能的方法。具有很好的参考价值,下面一起来看下吧效果如下:代码如下:<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>p横向
推荐度:
导读如何利用js实现横向拖拽导航条功能:本文主要介绍了js实现横向拖拽导航条功能的方法。具有很好的参考价值,下面一起来看下吧效果如下:代码如下:<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>p横向
 本文主要介绍了js实现横向拖拽导航条功能的方法。具有很好的参考价值,下面一起来看下吧

效果如下:

代码如下:

<!DOCTYPE HTML>
<html>
<head>
 <meta charset="UTF-8">
 <title>p横向拖拽排序</title>
 <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> 
 <style type="text/css">
 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;
 }
 </style>
</head>
<body>
<h1>p横向拖拽排序</h1>
<p class="box">
 <ul>
 <li class="drag"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >导航一</a></li>
 <li class="drag"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >导航二导航</a></li>
 <li class="drag"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >导航导航导航三</a></li>
 <li class="drag"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >导航导航四</a></li>
 <li class="drag"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >导五</a></li>
 </ul>
</p>
<script type="text/javascript">
 $(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'});
 // 创建新元素 插入拖拽元素之前的位置(虚线框)
 $("<p class='dash'></p>").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 <= tarFirstX) {
 tempp.insertBefore(tarFirst);
 }
 //判断要插入目标元素的 坐标后, 直接插入
 if (lastPos.x >= tarPos.x - thepHalf && lastPos.x1 >= tarPos.x1) {
 tempp.insertAfter(tarp);
 }
 });
 return false
 });
 });
</script>
</body>
</html>

文档

如何利用js实现横向拖拽导航条功能

如何利用js实现横向拖拽导航条功能:本文主要介绍了js实现横向拖拽导航条功能的方法。具有很好的参考价值,下面一起来看下吧效果如下:代码如下:<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>p横向
推荐度:
标签: js 导航栏 拖动
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top