如何居中对齐水平<UL>菜单?

Ste*_*ven 148 css xhtml menuitem

我需要居中对齐水平菜单.
我已经尝试了各种解决方案,包括混合inline-block/ block/ center-align等,但都没有成功.

这是我的代码:

<div class="topmenu-design">
    <!-- Top menu content: START -->
    <ul id="topmenu firstlevel">                                                                                       
      <li class="firstli" id="node_id_64"><div><a href="#"><span>Om kampanjen</span></a></div></li>
      <li id="node_id_65"><div><a href="#"><span>Fakta om inneklima</span></a></div></li>
      <li class="lastli" id="node_id_66"><div><a href="#"><span>Statistikk</span></a></div></li>
    </ul>
    <!-- Top menu content: END -->
</div>
Run Code Online (Sandbox Code Playgroud)

UPDATE

我知道如何居中对齐uldiv.这可以使用Sarfraz的建议来完成.但是列表项目仍然在内部浮动ul.

我需要Javascript来完成这个吗?

rei*_*sio 130

来自http://pmob.co.uk/pob/centred-float.htm:

前提很简单,基本上只涉及一个无宽度的浮动包装,它浮动到左边,然后从屏幕移到左边的宽度位置:relative; 左:-50%.接下来,嵌套的内部元素反转,并且应用+ 50%的相对位置.这具有将元素置于中心的效果.相对定位保持流动并允许其他内容在下面流动.

#buttons{
    float:right;
    position:relative;
    left:-50%;
    text-align:left;
}
#buttons ul{
    list-style:none;
    position:relative;
    left:50%;
}

#buttons li{float:left;position:relative;}/* ie needs position:relative here*/

#buttons a{
    text-decoration:none;
    margin:10px;
    background:red;
    float:left;
    border:2px outset blue;
    color:#fff;
    padding:2px 5px;
    text-align:center;
    white-space:nowrap;
}
#buttons a:hover{ border:2px inset blue;color:red;background:#f2f2f2;}
#content{overflow:hidden}/* hide horizontal scrollbar*/
Run Code Online (Sandbox Code Playgroud)
<div id="buttons">
    <ul>
        <li><a href="#">Button 1</a></li>
        <li><a href="#">Button 2's a bit longer</a></li>
        <li><a href="#">Butt 3</a></li>
        <li><a href="#">Button 4</a></li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 您能否在此答案中添加一些代码或上下文以防止链接腐烂? (9认同)
  • 别客气.21 (7认同)

Rob*_*sto 90

这适合我.如果我没有误解你的问题,你可以尝试一下.

    div#centerDiv {
        width: 100%;
        text-align: center;
        border: 1px solid red;
    }
    ul.centerUL {
        margin: 2px auto;
        line-height: 1.4;
        padding-left: 0;
    }
    .centerUL li {
        display: inline;
        text-align: center;
    }
Run Code Online (Sandbox Code Playgroud)
<div id="centerDiv">
    <ul class="centerUL">
        <li><a href="http://www.amazon.com">Amazon 1</a>&nbsp;&nbsp;</li>
        <li><a href="http://www.amazon.com">Amazon 2</a>&nbsp;&nbsp;</li>
        <li><a href="http://www.amazon.com">Amazon 3</a></li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 这实际上比reisio的答案更好地解决了我的问题. (10认同)
  • 同意@cweiske.只需在包含div上使用text-align:center解决了我的问题 (2认同)

Dai*_*ima 72

使用CSS3 flexbox.简单.

ul {
  display: flex;
  justify-content: center;
}

ul li {
  padding: 0 8px;
}
Run Code Online (Sandbox Code Playgroud)

  • 我肯定会推荐这种方法 (6认同)
  • 我也会推荐这种方法而不是选择的答案。 (2认同)

小智 20

这是我发现的最简单的方法.我用你的HTML.填充只是为了重置浏览器默认值.

ul {
  text-align: center;
  padding: 0;
}
li {
  display: inline-block;
}
Run Code Online (Sandbox Code Playgroud)
<div class="topmenu-design">
  <!-- Top menu content: START -->
  <ul id="topmenu firstlevel">
    <li class="firstli" id="node_id_64">
      <div><a href="#"><span>Om kampanjen</span></a>
      </div>
    </li>
    <li id="node_id_65">
      <div><a href="#"><span>Fakta om inneklima</span></a>
      </div>
    </li>
    <li class="lastli" id="node_id_66">
      <div><a href="#"><span>Statistikk</span></a>
      </div>
    </li>
  </ul>
  <!-- Top menu content: END -->
</div>
Run Code Online (Sandbox Code Playgroud)


mic*_*dwp 10

这是一篇很好的文章,介绍如何以一种非常坚固的方式实现它,没有任何黑客和完整的跨浏览器支持.适合我:

- > http://matthewjamestaylor.com/blog/beautiful-css-centered-menus-no-hacks-full-cross-browser-support