简体   繁体   English

HTML,CSS:未出现侧边栏子菜单

[英]Html, CSS : Sidebar sub menu not appearing

I have been following a tutorial online about creating a sidebar and i have run into an issue. 我一直在网上学习有关创建侧边栏的教程,但遇到了问题。 When i hover over one of the menus a sub menu appears. 当我将鼠标悬停在菜单之一上时,将出现一个子菜单。 But if i put anything to the right of the menu the sub menu does not appear only when you put the mouse over it. 但是,如果我在菜单的右侧放置了任何内容,则仅当将鼠标放在菜单上时,子菜单才会出现。 I want the menu to appear over the text to the right of the sidebar 我希望菜单显示在侧栏右侧的文本上方

The menu works perfectly when nothing is to the left (eg overflow:auto;) 当左边什么都没有时,菜单可以正常工作(例如:overflow:auto;)

Here is a jfiddle example of the issue 是问题的一个小例子

HTML 的HTML

    <nav id="sidebar-menu">

        <ul class="parent-sidebar-menu">

            <li><a href="#">Home & Kitchen</a>

                <ul>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                </ul>

            </li>

            <li><a href="#">Electronics</a>

                <ul>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                </ul></li>

            <li><a href="#">Clothing</a>

                <ul>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                </ul></li>

            <li><a href="#">Cars & Motorbikes</a>

                <ul>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                </ul>

            </li>

            <li><a href="#">Books</a>

                <ul>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                    <li><a href="#">item</a></li>

                </ul>

            </li>

            <li><a href="#">Support</a>

                <ul>

                    <li><a href="#">Contact Us</a></li>

                    <li><a href="#">Forum</a></li>

                    <li><a href="#">Deliveries</a></li>

                    <li><a href="#">T&C</a></li>

                </ul>

            </li>

        </ul>

    </nav>

</div>

<div align="top">

    <p>this is just a test</p>

</div>

CSS 的CSS

p, ul, li, div, nav
        {
            padding:0;
            margin:0;
        }


        body
        {
            font-family:Calibri;
        }


        #sidebar-menu {
            overflow: visible;
            position:relative;
            z-index:2;
        }


        .parent-sidebar-menu {
            background-color: #0c8fff;
            min-width:200px;
            float:left;
        }


        #sidebar-menu ul
        {
            list-style-type:none;
        }


        #sidebar-menu ul li a
        {

            padding:10px 15px;
            display:block;
            color:#fff;
            text-decoration:none;
        }


            #sidebar-menu ul li a:hover
            {
                background-color:#007ee9;
            }





#sidebar-menu ul li:hover > ul {

                left: 200px;

                -webkit-transition: left 200ms ease-in;

                -moz-transition: left 200ms ease-in;

                -ms-transition: left 200ms ease-in;

                transition: left 200ms ease-in;

            }


            #sidebar-menu ul li > ul {

                position: absolute;

                background-color: #333;

                top: 0;

                left: -200px;

                min-width: 200px;

                z-index: -1;

                height: 100%;

                -webkit-transition: left 200ms ease-in;

                -moz-transition: left 200ms ease-in;

                -ms-transition: left 200ms ease-in;

                transition: left 200ms ease-in;

            }


            #sidebar-menu ul li > ul li a:hover

            {

                background-color:#2e2e2e;

            }

Does anyone know how to fix this? 有谁知道如何解决这一问题?

Your sub-menu actually is showing up; 您的子菜单实际上正在显示; it's just the background color that doesn't show up. 只是背景颜色没有显示。 Right now, you have the background color applied the sub-menu's UL. 现在,您已经将背景色应用到了子菜单的UL中。 If you instead apply the background-color to the LIs within that UL, it fixes the issue (I think this might be because of the UL's very low z-index?). 如果您改为将背景色应用于该UL中的LI,则可以解决此问题(我认为这可能是因为UL的Z指数非常低?)。

Anyway, here's the CSS rule to add: 无论如何,这是要添加的CSS规则:

#sidebar-menu ul li > ul li {
    background-color: #333;
}

You can then remove the background-color from #sidebar-menu ul li > ul since it doesn't do anything. 然后,您可以从#sidebar-menu ul li > ul删除背景色,因为它没有任何作用。

The issue is that you have a z-index of -1 (so behind everything) on the CSS for your rollover. 问题是,在过渡时,CSS的z索引为-1(因此位于所有内容之后)。 Changing the Z-index of the #sidebar-menu ul li > ul to 100 and the z-index of the #sidebar-menu to 200 fixes it. 将#sidebar-menu ul li> ul的Z-index更改为100,将#sidebar-menu的z-index更改为200。 This should be your CSS: 这应该是您的CSS:

p, ul, li, div, nav
    {
        padding:0;
        margin:0;
    }


    body
    {
        font-family:Calibri;
    }


    #sidebar-menu {
        overflow: visible;
        position:relative;
        z-index:200;
    }


    .parent-sidebar-menu {
        background-color: #0c8fff;
        min-width:200px;
        float:left;
    }


    #sidebar-menu ul
    {
        list-style-type:none;
    }


    #sidebar-menu ul li a
    {

        padding:10px 15px;
        display:block;
        color:#fff;
        text-decoration:none;
        z-index:100;
    }


        #sidebar-menu ul li a:hover
        {
            background-color:#007ee9;
        }





#sidebar-menu ul li:hover > ul {

            left: 200px;

            -webkit-transition: left 200ms ease-in;

            -moz-transition: left 200ms ease-in;

            -ms-transition: left 200ms ease-in;

            transition: left 200ms ease-in;

        }


        #sidebar-menu ul li > ul {

            position: absolute;

            background-color: #333;

            top: 0;

            left: -200px;

            min-width: 200px;

            z-index: 1;

            height: 100%;

            -webkit-transition: left 200ms ease-in;

            -moz-transition: left 200ms ease-in;

            -ms-transition: left 200ms ease-in;

            transition: left 200ms ease-in;

        }


        #sidebar-menu ul li > ul li a:hover

        {

            background-color:#2e2e2e;

        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM