zoukankan      html  css  js  c++  java
  • 下拉菜单制作——利用CSS实现的一个实例

    本文实现了一个经典的下拉菜单的制作。

    首先,写出Html部分:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
        </head>
        <body>
            <ul class="top-nav">
                <li><a href="#">慕课网</a></li>
                <li><a href="#">课程大厅</a></li>
                <li><a href="#">学习中心</a>
                    <ul>
                        <li><a href="#">前端课程</a>
                            <ul>
                                <li><a href="#">html</a></li>
                                <li><a href="#">javascript</a></li>
                                <li><a href="#">css</a></li>
                            </ul>
                        </li>
                        <li><a href="#">手机开发</a></li>
                        <li><a href="#">后台编程</a></li>
                    </ul>
                </li>
                <li><a href="#">关于我们</a></li>
            </ul>
        </body>
    该代码实现的效果图如下:

    可以看到,这是一个三级菜单。

    现在,我们开始给一级菜单外部加入样式:

                .top-nav
                {
                    width: 960px;/**宽度*/
                    margin: 60px auto;
                    border: 1px solid #222;/**边框*/
                    background-color: #111;
                    background-image: linear-gradient(#444, #111);/**背景图*/
                    border-radius: 6px;/**圆角*/
                    box-shadow: 0 1px 1px #777;/**阴影:水平 垂直 模糊距离 模糊颜色*/
                    padding: 0;/**内边距*/
                    list-style: none;/**去掉小圆点*/
    }

    可以得到如下效果:

    处理一级菜单,从左至右显示,清除下划线以及小圆点:

                
                .top-nav li
                {
                    float: left;/**从左向右显示*/
                    border-right: 1px solid #222;/**间隔线*/
                    box-shadow: 1px 0 0 #444;
                    position: relative;/**相对定位*/
                }
                .top-nav li a
                {
                    float: left;
                    padding: 12px 30px;
                    color: #999;
                    text-decoration: none;/**去掉下划线*/
                    text-shadow: 0 1px 0 #000;/**文本阴影*/
                }
                .top-nav li a:hover
                {
                    color: #fafafa;    /**鼠标移入颜色*/
                }
                .top-nav li ul
                {
                    visibility: hidden;/**二级菜单隐藏显示*/
                    position: absolute;/**绝对定位*/
                    list-style: none;
                    top: 38px;
                    left: 0;
                    z-index: 1;
                    padding: 0;
                    background-color: #444;
                    background-image: linear-gradient(#444, #111);
                    box-shadow: 0 -1 0 rgba(255, 255, 255, 3);
                    border-radius: 3px;
                    opacity: 0;/**刚开始设为透明*/
                    margin: 20px 0 0 0;
                    transition: all .2s ease-in-out;/**二级菜单动画效果*/
                }
                .top-nav li:hover > ul
                {
                    opacity: 1;
                    visibility: visible;
                    margin: 0;
                }

    得到下图效果:

    可以发现一级菜单的背景被遮盖了,这是由于没有清除浮动引起的。在样式中加入如下代码,清除浮动:

                /**清除浮动*/
                .top-nav:before, .top-nav:after
                {
                    content: " ";
                    display: table;
                }
                .top-nav:after
                {
                    clear: both;
                }

    背景出现:

    下来定义子菜单的超链接和二级菜单的圆角样式:

                /**二级菜单*/
                .top-nav ul li
                {
                    float: none;
                    display: block;
                    border: 0;
                    box-shadow: 0 1px 0 #111, 0 2px 0 #666;/**间隔线效果*/
                }
                .top-nav ul a
                {
                    padding: 10px;
                    width: 130px;
                    display: block;
                    float: none;
                }
                .top-nav ul a:hover
                {
                    background-color: #0186ba;
                    background-image: linear-gradient(#04accc, #0186ba);
                }
                .top-nav ul li:first-child > a
                {
                    border-radius: 3px 3px 0 0;
                }
                .top-nav ul li:last-child > a
                {
                    border-radius: 0 0 3px 3px;
                }

    接下来添加三级菜单样式:

                /**三级菜单*/
                .top-nav ul li ul
                {
                    float: none;
                    left: 125px;
                    top: 0;
                    display: block;
                }

    如此,我们的效果图就做好了:

    是不是很酷?接下来为下拉菜单实现尖角。尖角位于二级菜单上面,是一个向上的箭头:

    .top-nav ul li:first-child > a:before
                {
                     content: " ";
                     position: absolute;
                     left: 40px;/**显示位置*/
                     top: -6px;
                    border-left: 6px solid transparent;    /**左右透明,只留下方*/    
                    border-right: 6px solid transparent; 
                    border-bottom: 6px solid #444;    
                }
                .top-nav ul li:first-child > a:hover:before
                {
                    border-bottom-color: #04acec;
                }

    尖角的实现原理:border上下左右四个方向,控制是否显示,则可以出现三角的效果。

    同样,三级菜单尖角与二级类似,不过变成了向右的箭头:

                .top-nav ul ul li:first-child > a:before
                {
                     content: " ";
                     position: absolute;
                     left: -6px;
                     top: 50%;
                    border-left: 0;        
                    border-right: 6px solid #3b3b3b; 
                    border-bottom: 6px solid transparent;
                    border-top: 6px solid transparent;    
                }
                .top-nav ul ul li:first-child > a:hover:before
                {
                    
                    border-right-color: #0299d3;
                    border-bottom-color: transparent;/**取消二级菜单的颜色*/
                }

    在这里要注意去掉从二级菜单继承的颜色。

    于是,一个下拉菜单就做好了:

  • 相关阅读:
    两台电脑间的消息传输
    商品库存订购管理管理程序代写代做代开发
    基于ssh的汽车配件进销存系统
    Ajax初识
    系统排队仿真源代码
    模拟一个排队系统
    Linux下,C++编程论坛题目抽取
    实践是检验真理的唯一标准2 脱壳篇03
    迪杰斯特拉算法
    最短路径求法
  • 原文地址:https://www.cnblogs.com/lingluo2017/p/6551635.html
Copyright © 2011-2022 走看看