文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用Html+css实现拖拽导航条

2024-04-02 19:55

关注

小编给大家分享一下如何使用Html+css实现拖拽导航条,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

<!DOCTYPE HTML>

<html>

<head>

    <meta charset="UTF-8">

    <title>div横向拖拽排序</title>

    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> 

    <style type="text/css">

        body, div {

            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>

<h2>div横向拖拽排序</h2>

<div class="box">

    <ul>

        <li class="drag"><a href="#">导航一</a></li>

        <li class="drag"><a href="#">导航二导航</a></li>

        <li class="drag"><a href="#">导航导航导航三</a></li>

        <li class="drag"><a href="#">导航导航四</a></li>

        <li class="drag"><a href="#">导五</a></li>

    </ul>

</div>

 

<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 theDiv = null, move = false;

        var choose = false; //拖拽对象 拖拽状态 选中状态

        var theDivId = 0, theDivHeight = 0, theDivHalf = 0;

        var tarFirstY = 0; //拖拽对象的索引、高度、的初始化。

        var tarDiv = null, tarFirst, tempDiv; //要插入的目标元素的对象, 临时的虚线对象

        var initPos = {x: 0, y: 0};

        var theDivWidth;//拖拽对象的宽度

        $(".drag").each(function () {

            $(this).mousedown(function (event) {

                choose = true;

                //拖拽对象

                theDiv = $(this);

                //记录拖拽元素初始位置

                initPos.x = theDiv.position().left;

                initPos.y = theDiv.position().top;

                //鼠标元素相对偏移量

                range.x = event.pageX - theDiv.position().left;

                range.y = event.pageY - theDiv.position().top;

                theDivId = theDiv.index();

                theDivWidth = theDiv.width();

                theDivHalf = theDivWidth / 2;

                theDiv.removeClass("drag");

                theDiv.addClass("drag-dash");

                theDiv.css({left: initPos.x + 'px', top: initPos.y + 'px'});

                // 创建新元素 插入拖拽元素之前的位置(虚线框)

                $("<div class='dash'></div>").insertBefore(theDiv);

                tempDiv = $(".dash");

                $(".dash").css("width" , theDivWidth);

                return false

            });

        });

 

 

        $(document).mouseup(function (event) {

            if (!choose) {

                return false;

            }

            if (!move) {

                //恢复对象的初始样式

                theDiv.removeClass("drag-dash");

                theDiv.addClass("drag");

 

                tempDiv.remove(); // 删除新建的虚线div

                choose = false;

                return false;

            }

            theDiv.insertBefore(tempDiv); // 拖拽元素插入到 虚线div的位置上

            //恢复对象的初始样式

            theDiv.removeClass("drag-dash");

            theDiv.addClass("drag");

            tempDiv.remove(); // 删除新建的虚线div

            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 + theDivWidth;

            // 拖拽元素随鼠标移动

            theDiv.css({left: lastPos.x + 'px', top: lastPos.y + 'px'});

            // 拖拽元素随鼠标移动 查找插入目标元素

            var $main = $('.drag'); // 局部变量:按照重新排列过的顺序 再次获取 各个元素的坐标,

            $main.each(function () {

                tarDiv = $(this);

                tarPos.x = tarDiv.position().left;

                tarPos.y = tarDiv.position().top;

                tarPos.x1 = tarPos.x + tarDiv.width() / 2;

                tarFirst = $main.eq(0); // 获得第一个元素\

                tarFirstX = tarFirst.position().left + theDivHalf; // 第一个元素对象的中心纵坐标

                //拖拽对象 移动到第一个位置

                if (lastPos.x <= tarFirstX) {

                    tempDiv.insertBefore(tarFirst);

                }

                //判断要插入目标元素的 坐标后, 直接插入

                if (lastPos.x >= tarPos.x - theDivHalf && lastPos.x1 >= tarPos.x1) {

                    tempDiv.insertAfter(tarDiv);

                }

            });

            return false

        });

    });

</script>

</body>

</html>

看完了这篇文章,相信你对“如何使用Html+css实现拖拽导航条”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯