html - 将子导航居中对齐到父级

标签 html css

如何使子导航菜单居中于父项?

对于每个导航菜单,我希望子导航菜单居中。

这是我尝试过的:JSFIDDLE

这是我的 HTML:

<ul class="nav">
    <li>
        <a href="#">Lorem Ipsum</a>
        <ul class="sub-nav">
            <li>
                <a href="#">Sub Nav 1</a>
            </li>
            <li>
                <a href="#">Sub Nav 2</a>
            </li>
            <li>
                <a href="#">Sub Nav 3</a>
            </li>
        </ul>
    </li>
    <li>
        <a href="#">Lorem</a>
        <ul class="sub-nav">
            <li>
                <a href="#">Sub Nav 1</a>
            </li>
            <li>
                <a href="#">Sub Nav 2</a>
            </li>
            <li>
                <a href="#">Sub Nav 3</a>
            </li>
        </ul>
    </li>
     <li>
        <a href="#">Sum</a>
            <ul class="sub-nav">
            <li>
                <a href="#">Sub Nav 1</a>
            </li>
            <li>
                <a href="#">Sub Nav 2</a>
            </li>
            <li>
                <a href="#">Sub Nav 3</a>
            </li>
        </ul>
    </li>
    <li>
        <a href="#">Lorem Lorem Ipsum</a>
            <ul class="sub-nav">
            <li>
                <a href="#">Sub Nav 1</a>
            </li>
            <li>
                <a href="#">Sub Nav 2</a>
            </li>
            <li>
                <a href="#">Sub Nav 3</a>
            </li>
        </ul>
    </li>
</ul>​

CSS:

.nav {
    list-style-type: none;
    margin: 0;
    padding: 0;
}

.nav li {
    float: left;  
    margin: 0 10px 0 0;   
    position: relative;        
} 

.nav li:hover .sub-nav {
    display: block;
}    

.nav li .sub-nav {
    margin: 0;
    padding: 0;
    width: 120px;
    position: absolute;
    z-index: 500;
    left: 0;
    top: 32px;
    display: none;  
    background: red;    
} 

.nav li .sub-nav li {
    float: none;    
    text-align: center;    
}  

最佳答案

从子导航的中心点减去第一个导航的中心点,并将其用作子导航的左侧位置

http://jsfiddle.net/XzqS4/10/

$(".nav > li > a").hover(function(e){
    var $el = $(this),
    elc = $el.width()/2,
    $subnav = $el.parent().find('.sub-nav'),
    subc = $subnav.width()/2;

    $subnav.css({ left: -(subc-elc)+'px' });
});

关于html - 将子导航居中对齐到父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13388433/

相关文章:

jquery - Bootstrap 轮播在 Shopify 中的最后一张幻灯片后停止

javascript - 文本对齐不起作用

html - CSS 背景图像/电影 URL?

php - 如果数据库中的值未支付或为 0(二进制),如何将颜色更改为红色?

javascript - 使用外部库的成本是多少?

javascript - 如何将可自定义的颜色更改框下载为带有背景图像的图像?

HTML、CSS : Append inline-element to the right of a centered inline-element

html - Z-Index 不适用于子 Div

javascript - 简单的 Javascript 我不知道如何将函数放在 if-else 语句中

php - 文件上传按钮在翻转卡上不起作用