1

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

小提琴

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;
}
4

1 回答 1

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;
}

演示

于 2013-05-29T17:57:41.683 回答