二级下拉菜单

作者: kerush | 来源:发表于2017-05-04 11:38 被阅读101次
前端入坑纪 12

最近忙得跟什么似的,今天难得抽空终于可以来更新简书了。
想来最近做了个二级下拉菜单,样式草草,请君略之~

截图

OK,first things first!项目链接

HTML 结构
    <nav>
        <ul id="navLvOne" class="navLvOne clearfix">
            <li>
                <a href="javascript:;">首页</a>

            </li>
            <li>
                <a href="javascript:;">一页</a>
                <ol>
                    <li>
                        <a href="javascript:;">页一1</a>
                    </li>
                    <li>
                        <a href="javascript:;">页一2</a>
                    </li>
                    <li>
                        <a href="javascript:;">页一3</a>
                    </li>
                    <li>
                        <a href="javascript:;">页一4</a>
                    </li>
                </ol>
            </li>
            <li>
                <a href="javascript:;">二页</a>
                <ol>
                    <li>
                        <a href="javascript:;">页二1</a>
                    </li>
                    <li>
                        <a href="javascript:;">页二2</a>
                    </li>
                    <li>
                        <a href="javascript:;">页二3</a>
                    </li>

                </ol>
            </li>
            <li>
                <a href="javascript:;">三页</a>
                <ol>
                    <li>
                        <a href="javascript:;">页三1</a>
                    </li>
                    <li>
                        <a href="javascript:;">页三2</a>
                    </li>

                </ol>
            </li>
            <li>
                <a href="javascript:;">四页</a>
                <ol>
                    <li>
                        <a href="javascript:;">页四1</a>
                    </li>
                    <li>
                        <a href="javascript:;">页四2</a>
                    </li>
                    <li>
                        <a href="javascript:;">页四3</a>
                    </li>
                    <li>
                        <a href="javascript:;">页四4</a>
                    </li>
                </ol>
            </li>
            <li>
                <a href="javascript:;">五页</a>
                <ol>
                    <li>
                        <a href="javascript:;">页五1</a>
                    </li>
                    <li>
                        <a href="javascript:;">页五2</a>
                    </li>

                </ol>
            </li>
        </ul>
    </nav>

二级菜单ol就是嵌套在外面ul的li里面,再相对于它来绝对定位。

CSS结构
        * {
            margin: 0;
            padding: 0;
        }
        
        ul,
        ol,
        li {
            list-style: none;
        }
        
        a {
            color: #333;
            text-decoration: none;
        }
        
        .clearfix {
            content: "";
            display: table;
            clear: both
        }
        
        .navLvOne {
            width: 100%
        }
        
        .navLvOne>li {
            float: left;
            width: 16.66%;
            position: relative;
            background-color: #dedede;
        }
        
        .navLvOne>li>a,
        .navLvOne>li>ol>li>a {
            line-height: 40px;
            height: 40px;
            display: block;
            width: 100%;
            text-align: center;
        }
        
        .navLvOne>li>a:hover {
            box-shadow: 0 0 1px #ccc;
        }
        
        .navLvOne>li>ol>li>a {
            color: #333;
        }
        
        .navLvOne>li>ol>li>a:hover {
            background-color: #ccc;
            color: #000;
        }
        
        .navLvOne>li>ol {
            transition: all 200ms ease-in-out;
            display: none;
            opacity: 0;
            width: 100%;
            position: absolute;
            top: 40px;
            left: 0;
            background-color: #fdfdfd;
        }

最上面的是一些css样式重置,然后基本上用到了最多的是css里的子选择器,入目且是的赶脚啊!

JS结构
        var olis = document.getElementById("navLvOne").children;

        for (var i = 1; i < olis.length; i++) {

            olis[i].onmouseover = function() {
                // 先把下拉菜单全部隐藏
                for (var l = 1; l < olis.length; l++) {
                    olis[l].lastElementChild.style.display = "none";
                    olis[l].lastElementChild.style.opacity = "0";
                }
                // 当前的this需要先保存下来,这样setTimeout里才能引用到
                var _this = this;
                this.lastElementChild.style.display = "block";
                // 先设置为block后再变opacity的值,这样过渡才有效果
                setTimeout(function() {
                    _this.lastElementChild.style.opacity = "1";
                }, 10);

            }

            // 在下拉菜单里划出时,隐藏它
            olis[i].lastElementChild.onmouseout = function() {
                this.style.display = "none";
                this.style.opacity = "0";
            }


        }

基本关键的点,都已经备注了相应的解释。如果对此有兴趣,可以好好研究下!

最近在看《你不知道的JavaScript》,很好的一套书,也推荐大家细细读。
入门的话,红宝书---《javascript高级程序设计》、犀牛书--《JavaScript学习指南》。

相关文章

  • Excel里面如何建立二级下拉菜单

    二级下拉菜单在工作表中也是经常会需要使用到的功能。下面就来介绍一下如何建立二级下拉菜单。 建立二级下拉菜单 如图,...

  • 05-JQuery页面导航

    一、普通二级下拉菜单 二、无限级下拉菜单 三、水平伸缩菜单 四、TreeView菜单

  • OFFSET不常用的函数 多加练习

    今天关于下拉菜单前面的技能都较容易,唯独涉及二级下拉菜单和联想下拉菜单时,运用到的函数OFFSET,需要花大时间进...

  • 神奇酷炫的下拉菜单

    今天学习的内容是下拉菜单的使用,学到中间才明白,日常生活中遇到的很对、很常见的表单,都是二级下拉菜单、联动下拉菜单...

  • Excel 三级菜单的制作

    Excel三级下拉菜单?不知道怎么描述更易懂,还是先看演示: A列是一级下拉菜单,可以选择类别 B列是二级下拉菜单...

  • E战到底特训营第十一天

    今日复习课程: 把下拉菜单又操作一遍,回忆INDIRECT函数的原理制作二级下拉菜单,offset函数暂未研...

  • 总结《茶韵》中踩的坑(已解决)

    一.index页面 1.基于jquery的三级导航菜单。 ①先实现二级普通下拉菜单,动态下拉菜单实现步骤: (1)...

  • 常用技巧

    下拉菜单的制作 一级下拉菜单数据选项卡--数据验证--序列--选取对应来源二级下拉菜单①在公式选项卡名称管理器下添...

  • 0401Excel学习笔记Day17

    学习的难度逐日增加,涉及到公式部分就比较烧脑啦.不过下拉菜单确实很高大上,尤其是二级下拉菜单和联想式下拉菜单,简直...

  • 2018-10-16 8.神奇酷炫的下拉菜单

    【回顾目标】 1、学习神奇酷炫的下拉菜单,掌握二级下拉菜单的制作 2、录个像样点的视频 3、整理明日分享内容 【评...

网友评论

    本文标题:二级下拉菜单

    本文链接:https://www.haomeiwen.com/subject/nnertxtx.html