• 三级浮动菜单的实现


    现在移动端设备横行,客户要求搞个时下比较流行的通过点击展开三级浮动菜单,效果如下:

    QQ截图20140811095311

    首先是例排的做法,把菜单用静态html布局拼出来

    <ul id="mcoMenuRoot">
        <li id="lv1ItemMenu" class="lv1Item" status="off">
            <div class="lv1RichItemContainer">一级菜单一</div>
            <ul class="lv2RichContainer">
                <li class="lv2FirstRichItem lv2RichItem">
                    <div class="lv2RichItemContainer" url="xx.html"><span class="lv2RichItem-text">二级菜单一</span><span class="lv2RichItem-btn">+</span></div>
                    <ul class="lv3Container">
                        <li class="lv3FirstItemNoSub lv3ItemNoSub" url="xx.html">三级菜单1</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单2</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单3</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单4</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单5</li>
                        <li class="lv3LastItemNoSub lv3ItemNoSub" url="xx.html">三级菜单6</li>
                    </ul>
                </li>
                <li class="lv2RichItem">
                    <div class="lv2RichItemContainer" url="xx.html"><span class="lv2RichItem-text">二级菜单二</span><span class="lv2RichItem-btn">+</span></div>
                    <ul class="lv3Container">
                        <li class="lv3FirstItemNoSub lv3ItemNoSub" url="xx.html">三级菜单1</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单2</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单3</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单4</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单5</li>
                        <li class="lv3LastItemNoSub lv3ItemNoSub" url="xx.html">三级菜单6</li>
                    </ul>
                </li>
                <li class="lv2RichItem">
                    <div class="lv2RichItemContainer" url="xx.html"><span class="lv2RichItem-text">二级菜单三</span><span class="lv2RichItem-btn">+</span></div>
                    <ul class="lv3Container">
                        <li class="lv3FirstItemNoSub lv3ItemNoSub" url="xx.html">三级菜单1</li>
                        <li class="lv3LastItemNoSub lv3ItemNoSub" url="xx.html">三级菜单2</li>
                    </ul>
                </li>
                <li class="lv2RichItem">
                    <div class="lv2RichItemContainer" url="xx.html"><span class="lv2RichItem-text">二级菜单四</span><span class="lv2RichItem-btn">+</span></div>
                    <ul class="lv3Container">
                        <li class="lv3FirstItemNoSub lv3ItemNoSub" url="xx.html">三级菜单1</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单2</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单3</li>
                        <li class="lv3ItemNoSub" url="xx.html" target="_blank">三级菜单4</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单5</li>
                        <li class="lv3LastItemNoSub lv3ItemNoSub" url="xx.html">三级菜单6</li>
                    </ul>
                </li>
                <li class="lv2RichItem">
                    <div class="lv2RichItemContainer" url="xx.html"><span class="lv2RichItem-text">二级菜单五</span><span class="lv2RichItem-btn">+</span></div>
                    <ul class="lv3Container">
                        <li class="lv3FirstItemNoSub lv3ItemNoSub" url="xx.html">三级菜单1</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单2</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单3</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单4</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单5</li>
                        <li class="lv3LastItemNoSub lv3ItemNoSub" url="xx.html">三级菜单6</li>
                    </ul>
                </li>
                <li class="lv2RichItem lv2LastRichItem">
                    <div class="lv2RichItemContainer" url="xx.html"><span class="lv2RichItem-text">二级菜单六</span><span class="lv2RichItem-btn">+</span></div>
                    <ul>
                        <li class="lv3FirstItemNoSub lv3ItemNoSub" url="xx.html">三级菜单1</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单2</li>
                        <li class="lv3ItemNoSub" url="xx.html">三级菜单3</li>
                        <li class="lv3LastItemNoSub lv3ItemNoSub" url="xx.html">三级菜单4</li>
                    </ul>
                </li>
            </ul>
        </li>
        <li id="lv1ItemLocations" class="lv1Item  " url="xx.html"><span class="lv1Item-text">一级菜单二</span></li>
        <li id="lv1ItemContact" class="lv1Item  " url="xx.html"><span class="lv1Item-text">一级菜单三</span></li>
        <li id="lv1ItemSearch" class="lv1Item " status="off">
            <div id="SearchContainer"></div>
        </li>
    </ul>

    设置菜单的样式

    .lv1Item
    {
        padding: 0;
        margin: 0;
        float: left;
        height: 47px;
        font-weight: bold;
        padding-top: 0px;
    }
    
    .lv2RichContainer
    {
        width: 400px;
        background-color: #4064b0;
        color: white;
        display: none;
    }
    
    .lv2RichItemContainer
    {
        height: 50px;
    }
    
    .lv3ItemNoSub
    {
        height: 40px;
        border-bottom: 1px solid #4064b0;
        padding-left: 35px;
        line-height: 40px;
        font-size: 16px;
        font-weight: normal;
    }
    
    .lv3Container
    {
        background-color: #3c5aa0;
    }
    
    .lv2RichItem
    {
        border-bottom: 1px dotted white;
    }
    
    .lv2LastRichItem
    {
        border-bottom: none;
    }
    
    .lv2RichItem-text
    {
        float: left;
        padding-left: 15px;
        line-height: 50px;
        font-size: 18px;
        font-weight: normal;
        color: #FFFFFF;
    }
    
    .lv2RichItem-btn
    {
        float: right;
        padding: 0px 15px;
        line-height: 49px;
        width: 20px;
        font-size: 26px;
        background-color: #3c5aa0;
        font-weight: normal;
        text-align: center;
    }
    
    .lv3Container
    {
        display: none;
    }
    
    .lv3Container-open
    {
        display: block;
    }
    
    #lv1ItemMenu
    {
        width: 102px;
        background-image: url("/SiteCollectionImages/mobile/nav_memu2.jpg");
        background-position: 0 0;
        color: #1a2f5a;
        padding-left: 0px;
        color: #9c8700;
    }
    
    #lv1ItemLocations
    {
        background-image: url("/SiteCollectionImages/mobile/new_nav2_over.jpg");
        width: 113px;
        padding-left: 0px;
    }
    
    #lv1ItemContact
    {
        background-image: url("/SiteCollectionImages/mobile/new_nav3_over.jpg");
        width: 100px;
        padding-left: 0px;
    }
    
    #lv1ItemSearch
    {
        background-image: url("/SiteCollectionImages/mobile/new_nav4_over.jpg");
        width: 85px;
    }
    
        #lv1ItemSearch.highlighted
        {
            background-image: url("/SiteCollectionImages/mobile/new_nav4_over2.jpg");
            width: 85px;
        }
    
    #SearchContainer
    {
        top: 47px;
    }
    
    .lv1RichItemContainer
    {
        padding-left: 22px;
        text-align: center;
        line-height: 47px;
    }
    
    .lv1ItemMenu_open
    {
        background-image: url("/SiteCollectionImages/mobile/nav_memu1.jpg")!important;
        color: #7799cc!important;
    }
    
    .lv1Item-text
    {
        padding-left: 27px;
        line-height: 47px;
    }

    初始化菜单及绑定菜单功能(对JQuery进行扩展)

    /**
     * @Creater: Nelson
     * @floatMenu Click to trigger the float Menu
     * @How to use it    
          $("#jsTopNavigation").floatMenu();
         $("#jsTopNavigation").bindMenuLinks();
     */
        $.fn.extend({
            floatMenu: function () {
                var This = $(this);
                This.find("#lv1ItemMenu").click(function () {
                    This.find("#SearchContainer").hide();
                    This.find("#lv1ItemSearch").attr('status', 'off');            
                    $(this).find(".lv2RichContainer").toggle();
                    if ($(this).attr('status') == 'on') {
                        $(this).removeClass("lv1ItemMenu_open");
                        $(this).attr('status', 'off');
                    }
                    else {
                        $(this).addClass("lv1ItemMenu_open");
                        $(this).attr('status', 'on');
                    }
                });
                This.find(".lv2RichItem-btn").on('click',function (event) {
                    event.stopPropagation();
                    This.find(".lv3Container").removeClass("lv3Container-open");
                    if ($(this).text() == "-") {
                        This.find(".lv2RichItem-btn").text("+");
                    }
                    else {
                        This.find(".lv2RichItem-btn").text("+");
                        $(this).text("-");
                        $(this).parent().next().addClass("lv3Container-open").css("opacity", 0).animate({ "opacity": 1 }, 200)
                    }
                });
                This.find("#lv1ItemSearch").on('click',function (event) {
                    event.stopPropagation();
                    This.find(".lv2RichContainer").hide(); 
                    This.find("#lv1ItemMenu").removeClass("lv1ItemMenu_open");
                    This.find("#lv1ItemMenu").attr('status', 'off');               
                    if ($(this).attr('status') == 'on') {
                        //Container should hide
                        $(this).children('div').hide();
                        $(this).attr('status', 'off').removeClass('highlighted');
                    } else {
                        //Container should show
                        $(this).children('div').show();
                        $('#screenCover').hide();
                        $(this).attr('status', 'on').addClass('highlighted');
                    }
    
                });
                This.find("#SearchContainer").on('click', function (event) {
                    event.stopPropagation();
                });        
             },
            bindMenuLinks: function () {
                var This = $(this);
                This.find('li').each(function () {
                    var self = $(this);
                    var url = self.attr('url');
                    var target = self.attr('target');
                    if (url != undefined  && url != '') {
                        self.on('click', function (event) {
                            event.stopPropagation();
                            if (target == undefined || target == '') {
                                location.href = url;
                            }
                            else {
                                window.open(url, target);
                            }
                        });
                    }            });
                This.find(".lv2RichItemContainer").each(function () {
                    var self = $(this);
                    var url = self.attr('url');
                    var target = self.attr('target');
                    if (url != undefined  && url != '') {
                        self.on('click', function (event) {
                            event.stopPropagation();
                            if (target == undefined || target == '') {
                                location.href = url;
                            }
                            else {
                                window.open(url, target);
                            }
                        });
                    }                
                });
            }
    
        })

    把html文件load进来开始调用进行初始化菜单,

    function initNavigation() {
            $("#jsTopNavigation").load("/Documents/newTopNav/corp_topnav.html", function () {
                $("#jsTopNavigation").floatMenu();
                $("#jsTopNavigation").bindMenuLinks();
            });
    }
  • 相关阅读:
    执行start-dfs.sh后,datenode没有启动的解决办法
    hadoop 在centos中的搭建
    MySQL 5.7的安装及主从复制(主从同步)
    CentOS7 配置免密码登陆
    关于使用maven打包如何聚合资源文件
    idea常用快捷键
    lombok的使用
    oracle 导出,导入表
    vue项目.eslintrc格式化
    vue-cli3项目关闭烦人的代码检测
  • 原文地址:https://www.cnblogs.com/fastmover/p/3904132.html
Copyright © 2020-2023  润新知