JQuery 左右移动菜单(精准定位移动距离)

自适应页面宽度,能精确移动到目标div处。

以下为源码,使用请注明出处。


<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <title></title>
    <script src="Scripts/jquery-1.7.1.js"></script>
    <style type="text/css">


        #container_menu_all {       
            margin-left:50px;  
            margin-top:200px;
        }
        #container_menu {
        overflow:hidden;
        height:38px;
        float:left;
        }
        .subMenu {
        position:relative;
        left:0px;
        }
         .subMenu div{
        width:100px;
        height:38px;
        margin-left:1px;
        margin-right:2px;
        float:left;
        background-color:blue;
        text-align:center;
        font-size:12px;
        color:white;
        }
            .subMenu div a {
            display:block;
            margin-top:12px;
                }
        #menu_left {
        width:32px; height:32px;float:left;  margin-top:3px; background-image:url('/images/scroll-left.png') ; background-repeat:no-repeat;background-position:center;   cursor:pointer;
        }
        #menu_right {
        width:32px;height:32px;float:left;margin-top:3px;background-image:url('/images/scroll-right.png') ; background-repeat:no-repeat;background-position:center; cursor:pointer;
        }


    </style>
    <script type="text/javascript" language="javascript">
        $(document).ready(function () {
                //右上菜单左右移动功能
                moveMenu_Init('load');
                $(window).resize(function () {
                    moveMenu_Init('resize');
                });
        });
        function moveMenu_Init(type) {
            //设置菜单容器div宽度     
            $('#container_menu').width($(window).width() - $('#menu_left').width() - $('#menu_right').width() - parseInt($('#container_menu_all').css('marginLeft').replace('px', ''))-2);
            if (type == 'load')//刷新页面
            {
                $('.subMenu').width(0);
                //2.2设置包裹小菜单的div宽度,必须设置
                $('.subMenu div').each(function (index) {
                    var width_current = $(this).width() + parseInt($(this).css('marginLeft').replace('px', '')) + parseInt($(this).css('marginRight').replace('px', ''))
                    $('.subMenu').width($('.subMenu').width() + width_current);
                });
                //绑定左右移动图标的onclick事件
                $('#menu_left').bind('click', function () {
                    move(this);
                });
                $('#menu_right').bind('click', function () {
                    move(this);
                });
            }
        }
        //获取移动方向中离操作图标最近的div的距离
        function getMinOffsetLeftDistance(iconobj) {
            var icondiv_id = $(iconobj).attr('id');
            var div_arry = $('.subMenu div');
            var icon_offsetleft = parseInt($(iconobj).offset().left);
            var icon_width = $(iconobj).width();
            var arry = [];
            var minDistance = 0;
            $(".subMenu div").each(function () {
                var currentdiv_offsetleft = $(this).offset().left;
                var currentdiv_width = $(this).width();
                var compare_distance;//对比距离
                if (icondiv_id == 'menu_left') {
                    compare_distance = icon_offsetleft + icon_width;
                    if (compare_distance - currentdiv_offsetleft > 0 && compare_distance - currentdiv_offsetleft > 1) //距离大于1px的纳入移动范围,消除浏览器解析差异
                    {
                        arry.push(parseInt(compare_distance - currentdiv_offsetleft));
                    }
                }
                else {
                    compare_distance = currentdiv_offsetleft + currentdiv_width
                    if (compare_distance - icon_offsetleft > 1)//距离大于1px的纳入移动范围,消除浏览器解析差异
                    {
                        arry.push(parseInt(compare_distance - icon_offsetleft));
                    }
                }
            });
            if (arry.length <= 0) {
                return 0;
            }
            minDistance = arry[0];
            for (var i = 0; i < arry.length; i++) {
                if (arry[i] < minDistance) {
                    minDistance = arry[i];
                }
            }
            return minDistance;
        }
        //移动
        function move(iconobj) {
            $(iconobj).unbind('click');//点完后立即设为不可点击 防止快速点击发生移动位置不对现象
            var joinmark = $(iconobj).attr('id') == 'menu_left' ? '+=' : '-=';
            var move_distance = getMinOffsetLeftDistance($(iconobj));
            if (move_distance > 0) {
                $('.subMenu').animate({ left: joinmark + move_distance }, "fast", function () {
                    $(iconobj).unbind('click').bind('click', function () {//重新绑定click事件
                        move(this);
                    });
                });
            }
            else {
                $(iconobj).unbind('click').bind('click', function () {
                    move(this);
                });
            }
        }
    </script>
</head>
<body style="margin:0px;">
                  <div id="container_menu_all">
                    <div id="menu_left" title="右移"></div>
                    <div id="container_menu">
                    <div class="subMenu">
                        <div><a>学生管理</a></div>
                        <div><a>成绩管理</a></div>
                        <div ><a>教学管理</a></div>
                        <div><a>排课管理</a></div>
                        <div><a>考试管理</a></div>
                        <div ><a>教师管理</a></div>
                        <div ><a>校风管理</a></div>
                    </div>
                    </div>
                    <div id="menu_right" title="左移"></div>
                  </div>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值