【问题标题】:horizontal menu breaks with dropdown menu水平菜单与下拉菜单中断
【发布时间】:2013-05-25 02:51:29
【问题描述】:

我有一个水平社交媒体菜单,将鼠标悬停在该菜单上时有两个选项。 菜单在悬停状态之外完全对齐,但是当一个项目悬停在上面时,水平对齐会中断。我想知道如何才能使下拉项显示在父项下方而不破坏水平对齐?

fiddle

html/php-

<div class="social">
        <ul>
            <li><a href="#"><img src="<?php bloginfo('template_url');?>/img/instagram.png" alt="instagram" /></a>
                <ul>
                    <li><a href="#">cait</a></li>
                    <li><a href="#">shannon</a></li>
                </ul>
            </li>
            <li><a href="#"><img src="<?php bloginfo('template_url');?>/img/youtube.png" alt="youtube" /></a>
                <ul>
                    <li><a href="#">cait</a></li>
                    <li><a href="#">shannon</a></li>
                </ul>
            </li>
            <li><a href="#"><img src="<?php bloginfo('template_url');?>/img/facebook.png" alt="facebook" /></a>
                <ul>
                    <li><a href="#">cait</a></li>
                    <li><a href="#">shannon</a></li>
                </ul>
            </li>
            <li><a href="#"><img src="<?php bloginfo('template_url');?>/img/twitter.png" alt="twitter" /></a>
                <ul>
                    <li><a href="#">cait</a></li>
                    <li><a href="#">shannon</a></li>
                </ul>
            </li>
            <li><a href="#"><img src="<?php bloginfo('template_url');?>/img/pinterest.png" alt="lockerz" /></a>
                <ul>
                    <li><a href="#">cait</a></li>
                    <li><a href="#">shannon</a></li>
                </ul>
            </li>
        </ul>
    </div><!-- end social -->

css-

#header .social {
    float: right;
    list-style: none;
    padding-top: 20px;
}

#header .social ul li {
    display: inline;
    position: relative;
}

#header .social ul li:hover {
    display: block;
    position: relative;
}

#header .social ul li ul {
    display: none;
}

#header .social ul li a {
    display: inline;
    padding-left: 6px;
    white-space: nowrap;
}

#header .social ul li:hover ul {
    display: block;
    position: relative;
}

#header .social ul li:hover li {
    float: none;
}

【问题讨论】:

    标签: html css drop-down-menu menu alignment


    【解决方案1】:

    有两件事需要解决:

    (1) 您最初是给您的 LI display:inline,然后在悬停时给您 display: block,这就是您的水平对齐中断的原因。摆脱 LI 的悬停状态并将其显示设置为inline-block

    (2) 你给你嵌入的 UL position:relative,所以当它显示时它仍然在页面的流中并增加父 LI 的宽度。改为position:absolute(并将其填充设置为 0)。

    您的 CSS 应如下所示:

    #header .social {
    float: right;
    list-style: none;
        padding-top: 20px;
    }
    
    #header .social ul {
        position: relative;
    }
    
    #header .social ul li {
        display: inline-block;
    }
    
    #header .social ul li ul {
        display: none;
        padding: 0;
    }
    
    #header .social ul li a {
        display: inline;
        padding-left: 6px;
        white-space: nowrap;
    }
    
    #header .social ul li:hover ul {
        display: block;
        position: absolute;
    }
    

    Demo

    【讨论】:

    • 删除 display: block 要么完全禁用悬停效果,要么根据删除的元素不改变菜单的操作方式。
    • 感谢您如此详尽的解释。
    猜你喜欢
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多