大头盆盆

导航

jQuery下拉滚动菜单

<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>jQuery下拉滚动菜单</title>
<style>
    body { margin: 0px; padding: 0px; background-color: #005388; }
    h1 { margin: 2em 0px; padding: 0px; color: #fff; text-align: center; font-weight: 100; font-size: 50px; }
    nav { width: 750px; margin: 1em auto; }
    ul { margin: 0px; padding: 0px; list-style: none; }
    ul.dropdown { position: relative; width: 100%; }
    ul.dropdown li { font-weight: bold; float: left; width: 180px; position: relative; background: #ecf0f1; }
    ul.dropdown a:hover { color: #000; }
    ul.dropdown li a { display: block; padding: 20px 8px; color: #34495e; position: relative; z-index: 2000; text-align: center; 
        text-decoration: none; font-weight: 300; }
    ul.dropdown li a:hover, ul.dropdown li a.hover { background: #3498db; position: relative; color: #fff; }
    ul.dropdown ul { display: none; position: absolute; top: 0; left: 0; width: 180px; z-index: 1000; }
    ul.dropdown ul li { font-weight: normal; background: #f6f6f6; color: #000; border-bottom: 1px solid #ccc; }
    ul.dropdown ul li a { display: block; color: #34495e !important; background: #eee !important; }
    ul.dropdown ul li a:hover { display: block; background: #3498db !important; color: #fff !important; }
    .drop > a { position: relative; }
    .drop > a:after { content: ""; position: absolute; right: 10px; top: 40%; border-left: 5px solid transparent; border-top: 5px solid #333; border-right: 5px solid transparent; z-index: 999; }
    .drop > a:hover:after { content: ""; border-left: 5px solid transparent; border-top: 5px solid #fff; border-right: 5px solid transparent; }

</style>
</head>

<body>
<h1>jQuery下拉滚动菜单</h1>
<nav>
    <ul class="dropdown">
        <li class="drop">
            <a href="#">导航1</a>
            <ul class="sub_menu">
                <li><a href="#">Lorem</a></li>
                <li><a href="#">Ipsum</a></li>
                <li><a href="#">Dolor</a></li>
                <li><a href="#">Lipsum</a></li>
                <li><a href="#">Consectetur </a></li>
                <li><a href="#">Duis</a></li>
                <li><a href="#">Sed</a></li>
                <li><a href="#">Natus</a></li>
                <li><a href="#">Excepteur</a></li>
                <li><a href="#">Voluptas</a></li>
                <li><a href="#">Voluptate</a></li>
                <li><a href="#">Malorum</a></li>
                <li><a href="#">Bonorum</a></li>
                <li><a href="#">Nemo</a></li>
                <li><a href="#">Quisquam</a></li>
                <li><a href="#">Adipisci </a></li>
                <li><a href="#">Excepteur</a></li>
                <li><a href="#">Consectetur </a></li>
                <li><a href="#">Duis</a></li>
                <li><a href="#">Voluptate</a></li>
                <li><a href="#">Ipsum</a></li>
                <li><a href="#">Dolor</a></li>
                <li><a href="#">Lipsum</a></li>
            </ul>
        </li>
        <li class="drop">
            <a href="#">导航2</a>
            <ul class="sub_menu">
                <li><a href="#">Lorem</a></li>
                <li><a href="#">Ipsum</a></li>
                <li><a href="#">Dolor</a></li>
                <li><a href="#">Lipsum</a></li>
                <li><a href="#">Consectetur </a></li>
                <li><a href="#">Duis</a></li>
                <li><a href="#">Sed</a></li>
                <li><a href="#">Natus</a></li>
                <li><a href="#">Excepteur</a></li>
                <li><a href="#">Voluptas</a></li>
                <li><a href="#">Voluptate</a></li>
                <li><a href="#">Malorum</a></li>
                <li><a href="#">Bonorum</a></li>
                <li><a href="#">Nemo</a></li>
                <li><a href="#">Quisquam</a></li>
            </ul>
        </li>
        <li class="drop">
            <a href="#">导航3</a>
            <ul class="sub_menu">
                <li><a href="#">Lorem</a></li>
                <li><a href="#">Ipsum</a></li>
                <li><a href="#">Dolor</a></li>
                <li><a href="#">Lipsum</a></li>
                <li><a href="#">Consectetur </a></li>
            </ul>
        </li>
        <li><a href="#">导航4</a> 
        </li>
    </ul>
</nav>
<script src='js/jquery-1.8.3.min.js'></script> 
<script src="js/index.js"></script>
</body>
</html>

Jquery代码

//确定页面的最大高度
var maxHeight = 400;

$(function(){

    $(".dropdown > li").hover(function() {
    
         var $container = $(this),
             $list = $container.find("ul"),
             $anchor = $container.find("a"),
             height = $list.height() * 1.1,      
             multiplier = height / maxHeight;     
        
        // 保存当前选定的导航的初始高度           
        $container.data("origHeight", $container.height());
        
        //给选定导航的a标签加class hover,鼠标离开导航,并在其下拉菜单滚动时,导航一直保留hover样式
        $anchor.addClass("hover");
        
        //显示下拉菜单,上边距是导航的高度   
        $list
            .show()
            .css({
                paddingTop: $container.data("origHeight")
            });
        
        // 当下拉菜单的高度小于最大高度时,则不运用滚动效果
        if (multiplier > 1) {
            $container
                .css({
                    height: maxHeight,
                    overflow: "hidden"
                })
                .mousemove(function(e) {
                    var offset = $container.offset();
                    var relativeY = ((e.pageY - offset.top) * multiplier) - ($container.data("origHeight") * multiplier);
                    if (relativeY > $container.data("origHeight")) {
                        $list.css("top", -relativeY + $container.data("origHeight"));
                    };
                });
        }
        
    }, function() {
    
        var $el = $(this);
        $el
            .height($(this).data("origHeight"))
            .find("ul")
            .css({ top: 0 })
            .hide()
            .end()
            .find("a")
            .removeClass("hover");
    
    });  
    
});

 

posted on 2016-07-29 14:28  大头盆盆  阅读(423)  评论(0编辑  收藏  举报