本站在用的一款炫丽过渡的CSS3导航菜单

HTML5+CSS3 欲思 3评论

昨天把博客的导航菜单修改了一下。加了一些新的CSS3样式。现在的效果大家也可以在我的导航菜单直接看得到。

在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素。使用CSS3的选择器的很容易地创建一个真正的新的和独特的设计。

今天就分享一款CSS3下拉菜单的炫丽效果:当你在上菜单项悬停,子菜单项出现婆娑渐现效果。

whirling-dropdown-menu

首先我们需要为CSS菜单创建HTML结构。像大多数其他的下拉菜单,这是UL-LI下拉菜单。下面是这个菜单的HTML标记:

<ul class="menu">
    <li><a href="#">Home</a></li>
    <li><a href="#s1">Menu 1</a>
        <ul class="submenu">
            <li><a href="#">Submenu a</a></li>
            <li><a href="#">Submenu b</a></li>
            <li><a href="#">Submenu c</a></li>
            <li><a href="#">Submenu d</a></li>
            <li><a href="#">Submenu e</a></li>
            <li><a href="#">Submenu f</a></li>
            <li><a href="#">Submenu g</a></li>
            <li><a href="#">Submenu h</a></li>
        </ul>
    </li>
   ......
    <li><a href="#">Menu 4</a></li>
    <li><a href="http://yusi123.com/3081.html">Back to tutorial</a></li>
</ul>

第二步、写一下基本的CSS样式规则:

.menu, .menu ul {
    list-style: none;
    padding: 0;
    margin: 0;
}
.menu {
    height: 58px;
}
.menu li {
    background: -moz-linear-gradient(#292929, #252525);
    background: -ms-linear-gradient(#292929, #252525);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #292929), color-stop(100%, #252525));
    background: -webkit-linear-gradient(#292929, #252525);
    background: -o-linear-gradient(#292929, #252525);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#292929', endColorstr='#252525');
    -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#292929', endColorstr='#252525')";
    background: linear-gradient(#292929, #252525);

    border-bottom: 2px solid #181818;
    border-top: 2px solid #303030;
    min-width: 160px;
}
.menu > li {
    display: block;
    float: left;
    position: relative;
}
.menu > li:first-child {
    border-radius: 5px 0 0;
}
.menu a {
    border-left: 3px solid rgba(0, 0, 0, 0);
    color: #808080;
    display: block;
    font-family: 'Lucida Console';
    font-size: 18px;
    line-height: 54px;
    padding: 0 25px;
    text-decoration: none;
    text-transform: uppercase;
}

第三部加上相应的悬停效果:

.menu li:hover {
    background-color: #1c1c1c;
    background: -moz-linear-gradient(#1c1c1c, #1b1b1b);
    background: -ms-linear-gradient(#1c1c1c, #1b1b1b);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #1c1c1c), color-stop(100%, #1b1b1b));
    background: -webkit-linear-gradient(#1c1c1c, #1b1b1b);
    background: -o-linear-gradient(#1c1c1c, #1b1b1b);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1c1c1c', endColorstr='#1b1b1b');
    -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#1c1c1c', endColorstr='#1b1b1b')";
    background: linear-gradient(#1c1c1c, #1b1b1b);
    border-bottom: 2px solid #222222;
    border-top: 2px solid #1B1B1B;
}
.menu li:hover > a {
    border-radius: 5px 0 0 0;
    border-left: 3px solid #C4302B;
    color: #C4302B;
}

第四部,加上子菜单的相应CSS样式:

/* submenu styles */
.submenu {left: 0;max-height: 0;position: absolute;top: 100%;z-index: 0;
    -webkit-perspective: 400px;
    -moz-perspective: 400px;
    -ms-perspective: 400px;
    -o-perspective: 400px;
    perspective: 400px;
}
.submenu li {
    opacity: 0;
    -webkit-transform: rotateY(90deg);-moz-transform: rotateY(90deg);
    -ms-transform: rotateY(90deg); -o-transform: rotateY(90deg);
    transform: rotateY(90deg);
    -webkit-transition: opacity .4s, -webkit-transform .5s; -moz-transition: opacity .4s, -moz-transform .5s;
    -ms-transition: opacity .4s, -ms-transform .5s; -o-transition: opacity .4s, -o-transform .5s;
    transition: opacity .4s, transform .5s;
}
.menu .submenu li:hover a {
    border-left: 3px solid #454545;
    border-radius: 0;
    color: #ffffff;
}
.menu > li:hover .submenu, .menu > li:focus .submenu {
    max-height: 2000px; z-index: 10;
}
.menu > li:hover .submenu li, .menu > li:focus .submenu li {
    opacity: 1;
    -webkit-transform: none;-moz-transform: none; -ms-transform: none;
    -o-transform: none;transform: none;
}

最后加上整个过渡效果代码

/* CSS3 delays for transition effects */
.menu li:hover .submenu li:nth-child(1) {
    -webkit-transition-delay: 0s; -moz-transition-delay: 0s;
    -ms-transition-delay: 0s;-o-transition-delay: 0s; transition-delay: 0s;
}
.menu li:hover .submenu li:nth-child(2) {
    -webkit-transition-delay: 50ms; -moz-transition-delay: 50ms;
    -ms-transition-delay: 50ms; -o-transition-delay: 50ms;transition-delay: 50ms;
}
.menu li:hover .submenu li:nth-child(3) {
    -webkit-transition-delay: 100ms;-moz-transition-delay: 100ms;
    -ms-transition-delay: 100ms;-o-transition-delay: 100ms; transition-delay: 100ms;
}
.menu li:hover .submenu li:nth-child(4) {
    -webkit-transition-delay: 150ms;-moz-transition-delay: 150ms;
    -ms-transition-delay: 150ms;-o-transition-delay: 150ms; transition-delay: 150ms;
}
.menu li:hover .submenu li:nth-child(5) {
    -webkit-transition-delay: 200ms;-moz-transition-delay: 200ms;
    -ms-transition-delay: 200ms;-o-transition-delay: 200ms;transition-delay: 200ms;
}
.menu li:hover .submenu li:nth-child(6) {
    -webkit-transition-delay: 250ms;-moz-transition-delay: 250ms;
    -ms-transition-delay: 250ms;-o-transition-delay: 250ms;transition-delay: 250ms;
}
.menu li:hover .submenu li:nth-child(7) {
    -webkit-transition-delay: 300ms; -moz-transition-delay: 300ms;
    -ms-transition-delay: 300ms;-o-transition-delay: 300ms;
    transition-delay: 300ms;
}
.menu li:hover .submenu li:nth-child(8) {
    -webkit-transition-delay: 350ms;-moz-transition-delay: 350ms;
    -ms-transition-delay: 350ms; -o-transition-delay: 350ms;
    transition-delay: 350ms;
}

.submenu li:nth-child(1) {
    -webkit-transition-delay: 350ms;-moz-transition-delay: 350ms;
    -ms-transition-delay: 350ms;-o-transition-delay: 350ms;transition-delay: 350ms;
}
.submenu li:nth-child(2) {
    -webkit-transition-delay: 300ms;-moz-transition-delay: 300ms;
    -ms-transition-delay: 300ms;-o-transition-delay: 300ms;transition-delay: 300ms;
}
.submenu li:nth-child(3) {
    -webkit-transition-delay: 250ms;-moz-transition-delay: 250ms;-ms-transition-delay: 250ms;
    -o-transition-delay: 250ms;transition-delay: 250ms;
}
.submenu li:nth-child(4) {
    -webkit-transition-delay: 200ms;-moz-transition-delay: 200ms;-ms-transition-delay: 200ms;
    -o-transition-delay: 200ms;transition-delay: 200ms;
}
.submenu li:nth-child(5) {
    -webkit-transition-delay: 150ms;-moz-transition-delay: 150ms;
    -ms-transition-delay: 150ms;  -o-transition-delay: 150ms;transition-delay: 150ms;
}
.submenu li:nth-child(6) {
    -webkit-transition-delay: 100ms; -moz-transition-delay: 100ms;
    -ms-transition-delay: 100ms;-o-transition-delay: 100ms;transition-delay: 100ms;
}
.submenu li:nth-child(7) {
    -webkit-transition-delay: 50ms; -moz-transition-delay: 50ms;
    -ms-transition-delay: 50ms;-o-transition-delay: 50ms; transition-delay: 50ms;
}
.submenu li:nth-child(8) {
    -webkit-transition-delay: 0s;-moz-transition-delay: 0s;
    -ms-transition-delay: 0s;-o-transition-delay: 0s; transition-delay: 0s;
}
源码下载 演示地址

转载请注明:欲思博客 » 本站在用的一款炫丽过渡的CSS3导航菜单

如果你觉得这篇文章或者我分享的主题对你有帮助,请支持我继续更新网站和主题 !捐赠本站
喜欢 (14)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(3)个小伙伴在吐槽
  1. CSS已经加进去了,为什么不生效呢?还需要设置什么
    dashulu2014-11-28 21:13 回复
  2. 源码下载之后怎么用?
    小苍LOL粉丝2014-06-21 03:14 回复