Monday 8 December 2014

Jquery Menu

<!DOCTYPE html>
<html lang="en">
<head>

    <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
    <style>
        body
        {
            margin: 0px;
            padding: 0px;
            background: #e74c3c;
            font-family: 'Lato', sans-serif;
        }

        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>
    <script>
        var maxHeight = 400;

        $(function () {

            $(".dropdown > li").hover(function () {

                var $container = $(this),
                    $list = $container.find("ul"),
                    $anchor = $container.find("a"),
                    height = $list.height() * 1.1,       // make sure there is enough room at the bottom
                    multiplier = height / maxHeight;     // needs to move faster if list is taller

                // need to save height here so it can revert on mouseout          
                $container.data("origHeight", $container.height());

                // so it can retain it's rollover color all the while the dropdown is open
                $anchor.addClass("hover");

                // make sure dropdown appears directly below parent list item  
                $list
                    .show()
                    .css({
                        paddingTop: $container.data("origHeight")
                    });

                // don't do any animation if list shorter than max
                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);

                // put things back to normal
                $el
                    .height($(this).data("origHeight"))
                    .find("ul")
                    .css({ top: 0 })
                    .hide()
                    .end()
                    .find("a")
                    .removeClass("hover");

            });

        });



    </script>
</head>
<body>
    <!--Made with Love by Larry Geams-->

    <h1>Solution for Long Drop Down Items</h1>

    <nav>
        <ul class="dropdown">
            <li class="drop"><a href="#">Really Tall Menu</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="#">Kinda Tall Menu</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="#">Average Menu</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="#">No Menu</a>
            </li>
        </ul>
    </nav>
</body>
</html>

No comments:

Post a Comment