水平导航到垂直响应式导航,响应式导航顶层高度过高,最后一个下一级导航消失



>我已经将水平导航转换为垂直响应式导航,但是当您通过轻舔"菜单"打开响应式导航顶层(ul li(时,ul li的高度太大(请参阅顶层下方的灰色区域(,下一级别的最后一个菜单点消失了(菜单 1 应有 7 个子级别菜单点 ul li ul li a's,菜单 2 应有 5 个,菜单 3 应有 3 个(。

我想出这与桌面版本中的以下CSS有关,但不知道如何摆脱这个问题:

            ul.topNav li ul {
            display: none;
            **position: absolute;
            top: 2.3rem;**
            background-color: rgb(245, 245, 245);
        }

尝试了很多,但没有任何效果。您可以在下面找到所有代码和链接,使其运行并查看结果。不要忘记在 320 到 979px 之间调整窗口大小,并可能重新加载以确保它正常工作。

function init() {
                var ww = document.body.clientWidth;
                var mobileLayout = ww <= 1024;
                if (mobileLayout) {
                    /* show topNav */
                    $("#menuIcon").click(function () {
                        $("#topNavResp").fadeToggle(100);
                        });
                        /* show topNav second level and close all others */
                        $('.topNavLi').on('click', function (event) {
                            event.preventDefault();
                            $(this).next('ul').slideToggle();
                            $(this).parent().siblings().children().next().slideUp();
                            return false;
                        });
                    } else {
                        alert('please reduce/shrink your window and reload');
                    }
                }
            html {
                font-size: 15px;
                background-color: rgba(227, 227, 227, 1);
            }
            ol, ul, li {
                list-style-type: none;
            }
            a {
                text-decoration: none;
            }
            /* ------------------- TOP NAV BAR ------------------------------------------ */
            #headerNavBar {
                width: 100%;
                height: 2.4rem;
                line-height: 2.4rem;
                display: block;
                background-color: #D3D3D3;
                *zoom: 1;
            }
            ul.topNav {
                float: right;
                width: 75%;
                height: 2.3rem;
                position: relative;
                z-index: 10;
            }
            ul.topNav > li {
                line-height: 2.3rem;
                float: left;
                width: auto;
                position: relative;
            }
            ul.topNav li a.topNavLi {
                height: 2.3rem;
                float: left;
                padding: 0 10.3%;
            }
            ul.topNav li a:hover.topNavLi,
            ul.topNav li:active a.topNavLi,
            ul.topNav li:hover a.topNavLi {
                    border-bottom: 0.13rem solid #e23427;
                    color: #e23427;
            }
            /* ------------------- TOP NAV 2nd LEVEL------------------------------------- */
            ul.topNav li ul {
                display: none;
                position: absolute;
                top: 2.3rem;
                background-color: rgb(245, 245, 245);
            }
            ul.topNav li ul li {
                float: none;
                display: block;
            }
            ul.topNav li ul li a {
                display: block;
                color: #231f20;
            }
            ul.topNav li ul li:hover,
            ul.topNav li ul li:active {
                    background-color: rgb(227, 33, 33);
            }
            ul.topNav li ul li:hover a,
            ul.topNav li ul li:active a {
                    color: #fff;
            }
            /**************************************************************************** */
            /**************************************************************************** */
            @media only screen and (min-width: 320px) and (max-width: 979px)
            {
                body {
                    width: 95%;
                    margin: 0 auto;
                }
                #wrapper {
                    width: 100%;
                }    
                #pageHead {
                    width: 100%;
                }
                /* ------------------- NAVI Responsive  --------------------------------- */
                #headerNavBar {
                    height: 2.9rem;
                    line-height: 2.9rem;
                    position: relative;
                }
                #menuIcon {
                    display: block;
                    position: absolute;
                    top: 0;
                    right: 0;
                    padding: 0.3rem 1rem 0 0;
                }         
                ul.topNav {
                    display: none;
                    float: none;
                    width: 100%;
                    position: absolute;
                    top: 2.9rem;
                }
                .topNav > li {
                    width: 100% !important;
                    background-color: #D3D3D3;
                    display: block;
                    position: static;
                    border-bottom: 1px solid #FFF;
                }
                ul#topNavResp.topNav li a.topNavLi,
                ul#topNavResp.topNav li ul li a {
                    width: 100%;
                }
                ul.topNav li a:hover.topNavLi,
                ul.topNav li:active a.topNavLi,
                ul.topNav li:hover a.topNavLi {
                border: none;
                }
            /* ------------------- TOP NAV Responsive 2nd LEVEL ------------------------- */
                ul.topNav li ul {
                    display: none;
                    width: 100%;
                    position: static;
                    padding-left: 10.3%;
                    background-color: rgb(245, 245, 245);
                }
                ul.topNav li ul li {
                    width: 100%;
                }
            }
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    </head>
    <body onload="init();">
        <div id="wrapper">
            <div id="pageHead">
                <nav id="headerNavBar">                 
                    <a href="#" id="menuIcon">MENU</a>
                 
                    <ul class="topNav" id="topNavResp">
                        <li>
                            <a href="#" class="topNavLi">Menu 1</a>
                            <ul>
                                <li><a href="#">11111</a></li>
                                <li><a href="#">22222</a></li>
                                <li><a href="#">33333</a></li>
                                <li><a href="#">44444</a></li>
                                <li><a href="#">55555</a></li>
                                <li><a href="#">66666</a></li>
                                <li><a href="#">77777</a></li>
                            </ul>
                        </li> 
                        <li>
                            <a href="#" class="topNavLi">Menu 2</a>
                            <ul>
                                <li><a href="#">11111</a></li>
                                <li><a href="#">22222</a></li>
                                <li><a href="#">33333</a></li>
                                <li><a href="#">44444</a></li>
                                <li><a href="#">55555</a></li>
                            </ul>
                        </li> 
                        <li>
                            <a href="#" class="topNavLi">Menu 3</a>
                            <ul>
                                <li><a href="#">11111</a></li>
                                <li><a href="#">22222</a></li>
                                <li><a href="#">33333</a></li>
                            </ul>
                        </li>
                    </ul>
                </nav><!-- end topNav -->
            </div>
 
        </div><!-- end wrapper -->
    </body>
</html>

更改规则:

@media only screen and (max-width: 979px) and (min-width: 320px){ ul.topNav li ul { ... position: inherit; } }

自:

@media only screen and (max-width: 979px) and (min-width: 320px){ ul.topNav li ul { ... position: static; } }

相关内容

  • 没有找到相关文章

最新更新