Tạo Vertical Navigation Menu với CSS3 và jQuery

Menu là một thành phần không thể thiếu trong các website, để giúp các bạn có thêm một sự lựa chọn cho menu trong các website của các bạn. Hôm nay mình xin chia sẻ một mẫu menu đẹp được xây dựng chủ yếu từ CSS3 và jQuery. Các bạn có thể xem demo bài viết hoặc download trực tiếp về máy của mình trước khi tiến hành từng bước trong bài viết này.

css3, css3 tutorial, jQuery, menu, Vertical Navigation Menu

Bước 1: Việc đầu tiên là chúng ta tạo một bộ khung chuẩn html cho menu của mình.

<div id="wrapper">

    <ul class="menu">

        <li class="item1"><a href="#">Friends <span>340</span></a>

            <ul>

                <li class="subitem1"><a href="#">Cute Kittens <span>14</span></a></li>

                <li class="subitem2"><a href="#">Strange "Stuff" <span>6</span></a></li>

                <li class="subitem3"><a href="#">Automatic Fails <span>2</span></a></li>

            </ul>

        </li>

        <li class="item2"><a href="#">Videos <span>147</span></a>

            <ul>

                <li class="subitem1"><a href="#">Cute Kittens <span>14</span></a></li>

                <li class="subitem2"><a href="#">Strange "Stuff" <span>6</span></a></li>

                <li class="subitem3"><a href="#">Automatic Fails <span>2</span></a></li>

            </ul>

        </li>

        <li class="item3"><a href="#">Galleries <span>340</span></a>

            <ul>

                <li class="subitem1"><a href="#">Cute Kittens <span>14</span></a></li>

                <li class="subitem2"><a href="#">Strange "Stuff" <span>6</span></a></li>

                <li class="subitem3"><a href="#">Automatic Fails <span>2</span></a></li>

            </ul>

        </li>

        <li class="item4"><a href="#">Podcasts <span>222</span></a>

            <ul>

                <li class="subitem1"><a href="#">Cute Kittens <span>14</span></a></li>

                <li class="subitem2"><a href="#">Strange "Stuff" <span>6</span></a></li>

                <li class="subitem3"><a href="#">Automatic Fails <span>2</span></a></li>

            </ul>

        </li>

        <li class="item5"><a href="#">Robots <span>16</span></a>

            <ul>

                <li class="subitem1"><a href="#">Cute Kittens <span>14</span></a></li>

                <li class="subitem2"><a href="#">Strange "Stuff" <span>6</span></a></li>

                <li class="subitem3"><a href="#">Automatic Fails <span>2</span></a></li>

            </ul>

        </li>

    </ul>

</div>

Sau khi tạo xong, chúng ta sẽ có kết quả như thế này :

css3, css3 tutorial, jQuery, menu, Vertical Navigation Menu

Bước 2 : Định dạng với CSS

Trước tiên chúng ta sẽ định dạng cho menu :

body {

    font-size: 100%;

}

a {

    text-decoration: none;

}

ul,

ul ul {

    margin: 0;

    padding: 0;

    list-style: none;

}

#wrapper {

    width: 220px;

    margin: 100px auto;

    font-size: 0.8125em;

}

.menu {

    width: auto;

    height: auto;

    -webkit-box-shadow: 0px 1px 3px 0px rgba(0,0,0,.73), 0px 0px 18px 0px rgba(0,0,0,.13);

    -moz-box-shadow: 0px 1px 3px 0px rgba(0,0,0,.73), 0px 0px 18px 0px rgba(0,0,0,.13);

    box-shadow: 0px 1px 3px 0px rgba(0,0,0,.73), 0px 0px 18px 0px rgba(0,0,0,.13);

}

.menu > li > a {

    background-color: #616975;

    background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(114, 122, 134)),to(rgb(80, 88, 100)));

    background-image: -webkit-linear-gradient(top, rgb(114, 122, 134), rgb(80, 88, 100));

    background-image: -moz-linear-gradient(top, rgb(114, 122, 134), rgb(80, 88, 100));

    background-image: -o-linear-gradient(top, rgb(114, 122, 134), rgb(80, 88, 100));

    background-image: -ms-linear-gradient(top, rgb(114, 122, 134), rgb(80, 88, 100));

    background-image: linear-gradient(top, rgb(114, 122, 134), rgb(80, 88, 100));

    filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#727a86', EndColorStr='#505864');

    border-bottom: 1px solid #33373d;

    -webkit-box-shadow: inset 0px 1px 0px 0px #878e98;

    -moz-box-shadow: inset 0px 1px 0px 0px #878e98;

    box-shadow: inset 0px 1px 0px 0px #878e98;

    width: 100%;

    height: 2.75em;

    line-height: 2.75em;

    text-indent: 2.75em;

    display: block;

    position: relative;

    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;

    font-weight: 600;

    color: #fff;

    text-shadow: 0px 1px 0px rgba(0,0,0,.5);

}

Để rõ hơn, chúng ta sẽ chèn thêm màu cho body

body {

    background:#32373d;

}

css3, css3 tutorial, jQuery, menu, Vertical Navigation Menu

Kế tiếp chúng ta sẽ định dạng cho phần Sub Menu

.menu ul li a {

    background: #fff;

    border-bottom: 1px solid #efeff0;

    width: 100%;

    height: 2.75em;

    line-height: 2.75em;

    text-indent: 2.75em;

    display: block;

    position: relative;

    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;

    font-size: 0.923em;

    font-weight: 400;

    color: #878d95;

}

.menu ul li:last-child a {

    border-bottom: 1px solid #33373d;

}

Bây giờ menu của chúng ta đã trở nên khá hơn :

css3, css3 tutorial, jQuery, menu, Vertical Navigation Menu


Kế tiếp chúng ta sẽ định dạng cho phần Hover và Active

.menu > li > a:hover,

.menu > li > a.active {

    background-color: #35afe3;

    background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(69, 199, 235)),to(rgb(38, 152, 219)));

    background-image: -webkit-linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));

    background-image: -moz-linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));

    background-image: -o-linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));

    background-image: -ms-linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));

    background-image: linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));

    filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#45c7eb', EndColorStr='#2698db');

    border-bottom: 1px solid #103c56;

    -webkit-box-shadow: inset 0px 1px 0px 0px #6ad2ef;

    -moz-box-shadow: inset 0px 1px 0px 0px #6ad2ef;

    box-shadow: inset 0px 1px 0px 0px #6ad2ef;

}

.menu > li > a.active {

    border-bottom: 1px solid #1a638f;

}

Tiếp theo là Menu Icons

.menu > li > a:before {

    content: '';

    background-image: url(../images/sprite.png);

    background-repeat: no-repeat;

    font-size: 36px;

    height: 1em;

    width: 1em;

    position: absolute;

    left: 0;

    top: 50%;

    margin: -.5em 0 0 0;

}

.item1 > a:before {

    background-position: 0 0;

}

.item2 > a:before {

    background-position: -38px 0;

}

.item3 > a:before {

    background-position: 0 -38px;

}

.item4 > a:before {

    background-position: -38px -38px;

}

.item5 > a:before {

    background-position: -76px 0;

}

css3, css3 tutorial, jQuery, menu, Vertical Navigation Menu

Kế tiếp là Menu Numbers

.menu > li > a span {

    font-size: 0.857em;

    display: inline-block;

    position: absolute;

    right: 1em;

    top: 50%;

    background: #48515c;

    line-height: 1em;

    height: 1em;

    padding: .4em .6em;

    margin: -.8em 0 0 0;

    color: #fff;

    text-indent: 0;

    text-align: center;

    -webkit-border-radius: .769em;

    -moz-border-radius: .769em;

    border-radius: .769em;

    -webkit-box-shadow: inset 0px 1px 3px 0px rgba(0, 0, 0, .26), 0px 1px 0px 0px rgba(255, 255, 255, .15);

    -moz-box-shadow: inset 0px 1px 3px 0px rgba(0, 0, 0, .26), 0px 1px 0px 0px rgba(255, 255, 255, .15);

    box-shadow: inset 0px 1px 3px 0px rgba(0, 0, 0, .26), 0px 1px 0px 0px rgba(255, 255, 255, .15);

    text-shadow: 0px 1px 0px rgba(0,0,0,.5);

    font-weight: 500;

}

.menu > li > a:hover span, .menu > li a.active span {

    background: #2173a1;

}

css3, css3 tutorial, jQuery, menu, Vertical Navigation Menu

Tiếp theo là định dạng cho phần Sub Menu Numbers

.menu ul > li > a span {

    font-size: 0.857em;

    display: inline-block;

    position: absolute;

    right: 1em;

    top: 50%; /

    background: #fff;

    border: 1px solid #d0d0d3;

    line-height: 1em;

    height: 1em;

    padding: .4em .7em;

    margin: -.9em 0 0 0;

    color: #878d95;

    text-indent: 0;

    text-align: center;

    -webkit-border-radius: .769em;

    -moz-border-radius: 769em;

    border-radius: 769em;

    text-shadow: 0px 0px 0px rgba(255,255,255,.01));

}

.menu > li > ul li a:before {

    content: '<img class="emoji" draggable="false" alt="" src="http://s.w.org/images/core/emoji/72x72/25b6.png">';

    font-size: 8px;

    color: #bcbcbf;

    position: absolute;

    width: 1em;

    height: 1em;

    top: 0;

    left: -2.7em;

}

.menu > li > ul li:hover a,

.menu > li > ul li:hover a span,

.menu > li > ul li:hover a:before {

    color: #32373D;

}

css3, css3 tutorial, jQuery, menu, Vertical Navigation Menu

Bước 3 : Vậy là phần css đã xong, chúng ta sẽ tiếp tục với phần jQuery để tạo ra hiệu ứng :

Trước tiên chúng ta sẽ chèn đoạn script sau ngay bên trong thẻ <head>

<script type="text/javascript" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>

<script type="text/javascript" src="scripts.js"></script>

Tạo một file scripts.js sau đó copy đoạn code bên dưới rồi past vào :

<script type="text/javascript">

$(function() {

    var menu_ul = $('.menu > li > ul'),

        menu_a  = $('.menu > li > a');

    menu_ul.hide();

    menu_a.click(function(e) {

        e.preventDefault();

        if(!$(this).hasClass('active')) {

            menu_a.removeClass('active');

            menu_ul.filter(':visible').slideUp('normal');

            $(this).addClass('active').next().stop(true,true).slideDown('normal');

        } else {

            $(this).removeClass('active');

            $(this).next().stop(true,true).slideUp('normal');

        }

    });

});

</script>

Vậy là xong, menu của chúng ta đã hoàn thành, nếu có vấn đề gì trong quá trình hoàn thành bài viết, các bạn để lại lời nhắn dưới dạng comments nhé, mình sẽ giúp các bạn hoàn thành bài viết này.

 

 HỖ TRỢ TRỰC TUYẾN