CSS3应用(1)-二级导航的制做

若是想要实现网页的二级导航,咱们能够使用JS技术,动态的显示和隐藏二级菜单,固然也能够使用CSS技术来实现。而且这里推荐使用CSS,由于其效率更高,更流畅。这里将介绍二级菜单的动态显示与隐藏。

1 结构

通常导航的主体咱们主要是使用ul li标签css

<body>
    <header>
        <!-- 一级导航开始 -->
        <nav>
            <ul class="menu">
                <li>
                    <a href="#">首页</a>
                </li>
                <li>
                    <a href="#">产品</a>
                    <!-- 二级导航开始 -->
                    <ul class="submenu">
                        <li><a href="#">小程序</a></li>
                        <li><a href="#">微信</a></li>
                        <li><a href="#">企业站</a></li>
                    </ul>
                    <!-- 二级导航结束 -->
                </li>
                <li>
                    <a href="#">服务</a>
                    <!-- 二级导航开始 -->
                    <ul class="submenu">
                        <li><a href="#">技术支持</a></li>
                        <li><a href="#">产品外包</a></li>
                    </ul>
                    <!-- 二级导航结束 -->
                </li>
                <li><a href="#">关于咱们</a></li>
                <li><a href="#">人才招聘</a></li>
            </ul>
        </nav>
        <!-- 一级导航结束 -->
    </header>
</body>

2 布局

导航的布局,因为子元素要随着父元素,因此对二级菜单选取定位布局。要想让多个li在一行中显示,那么就须要让li进行浮动。小程序

body{margin: 0; font-size: 14px; color: #666}
        ul,ol{margin: 0;padding: 0; list-style: none;}
        a {text-decoration: none; color: #666;}
        /*一级导航*/
        /*背景色*/
        ul.menu,ul.submenu {
            background-color: #ededed;
        }
        /*一级导航浮动*/
        ul.menu::after {
            content: '';
            display: block;
            clear: both;
        }
        ul.menu > li {
            float: left;
            width: 120px;
            line-height: 3em;
            height: 3em;
            text-align: center;
            cursor:pointer;
        }
    
        /*二级导航项分割线*/
        ul.submenu {
            /*默认隐藏*/
            display: none;
        }
        ul.submenu > li {
            border-bottom: 1px solid #fff;
        }
        
        /*内容区*/
        .content {
            min-height: 800px;
            background-color: #fff;
        }

3. 二级菜单显示特效

  • 光标放到导航上,当前元素背景色变深,字体颜色变淡。
  • 若是有二级菜单,显示二级菜单

为了实现上述两个特效,咱们能够利用伪类选择器(:hover)来捕捉光标悬浮的操做。而且使用伪类选择器(:hover)来选择到当前菜单对应的二级菜单微信

利用以下CSS能够快速实现该特效。布局

/*选中特效*/
        ul.menu > li:hover {
            background-color: #666;
        }
        ul.menu > li:hover > a {
            color: #fff;
        }
        ul.menu > li:hover > ul.submenu {
            display: block;
        }

4. 动画

上述代码中二级菜单的显示是瞬间的。可否提供一个缓慢动画过渡的效果,固然也是没问题。这里须要使用animation来进行动画的配置,那么动画帧能够本身写或者是寻求第三方代码库(animate.css)的支持。这里我将使用透明度来实现这个淡入效果字体

/*动画帧*/
        @keyframes fade {
            from {
                opacity: 0;
            }
            to {
                opacity: 1;
            }
        }
        /*基础动画样式*/
        .animated {
            animation-duration: 1s;
            animation-fill-mode: both;
        }
        .fadeIn {
            animation-name: fade;
            animation-direction: normal;
        }

动画定义好后,能够直接将动画样式引用到ul.submenu上,注意,若是使用的是animate.css,那么上述步骤将省略,直接用其提供好的动画样式便可。动画

<!-- 二级导航开始 -->
        <ul class="submenu animated fadeIn">
            <li><a href="#">小程序</a></li>
            <li><a href="#">微信</a></li>
            <li><a href="#">企业站</a></li>
        </ul>
        <!-- 二级导航结束 -->

fpaBvL7LOx.gif

相关文章
相关标签/搜索