【问题标题】:Html, CSS : Sidebar sub menu not appearingHtml,CSS:侧边栏子菜单未出现
【发布时间】:2015-08-13 23:39:27
【问题描述】:

我一直在关注有关创建侧边栏的在线教程,但遇到了问题。当我将鼠标悬停在其中一个菜单上时,会出现一个子菜单。但是,如果我将任何内容放在菜单的右侧,则只有当您将鼠标放在它上面时,子菜单才会出现。我希望菜单出现在侧边栏右侧的文本上方

当左边没有任何东西时,菜单可以完美运行(例如溢出:自动;)

Here 是该问题的一个 jfiddle 示例

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

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;

            }

有谁知道如何解决这个问题?

【问题讨论】:

    标签: html css jsp


    【解决方案1】:

    您的子菜单实际上正在显示;它只是没有显示的背景颜色。现在,您已将背景颜色应用于子菜单的 UL。如果您改为将背景颜色应用于该 UL 中的 LI,它可以解决问题(我认为这可能是因为 UL 的 z-index 非常低?)。

    无论如何,这是要添加的 CSS 规则:

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

    然后您可以从 #sidebar-menu ul li &gt; ul 中删除背景颜色,因为它没有任何作用。

    【讨论】:

    • 谢谢你成功了 :-) 只是一个简单的问题,目前 thsub 菜单从顶部出现,你知道如何让子菜单从你有的选项开始弹出吗选择了吗?
    • 嗯,一直在努力实现这一目标。你肯定想把 #sidebar-menu ul li &gt; ul 改成 position: relative; top: -40px;,但这会导致你的菜单项太高,不知道如何解决......
    • 啊,我只是说我还是问问,我会继续努力的。无论如何,你回答了我的主要问题,所以谢谢:-)
    • 其实我知道了。做我之前评论中提到的CSS,然后显式设置#sidebar-menu ul li { height: 40px; },然后就大功告成了! Here's a jsfiddle
    • 这个工作原理的基本概要。设置子菜单 UL 告诉它相对于其父级(即主菜单中的 LI)定位将使其与其菜单项对齐。这会导致它直接在 A 标记下方呈现,因此我们设置top: -40px 将其移回 A 标记旁边。使用position:relative 还会导致 LI 标签在自动高度中包含子菜单,使其太高。所以我们强制 LI 标签的高度为 40px(从技术上讲,子菜单溢出了 LI)。哈哈,很高兴它有效! :)
    【解决方案2】:

    问题是您在 CSS 上的 z-index 为 -1(因此在所有内容之后)用于翻转。 将#sidebar-menu ul li > ul 的 Z-index 更改为 100,将 #sidebar-menu 的 z-index 更改为 200 即可解决此问题。 这应该是你的 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;
    
            }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    相关资源
    最近更新 更多