将<ul> <li>中心转换为div

men*_*mam 82 html css html-lists

经过一些搜索,我没有找到一个正确的方法来将列表中心<li>固定到一个固定的宽度div.

看看页面 ..它也不起作用!

Ara*_*yan 160

要使ul 居中并且也将li元素置于其中心,并使ul的宽度动态变化,请使用display:inline-block; 并将其包裹在一个居中的div中.

<style type="text/css">
    .wrapper {
        text-align: center;
    }
    .wrapper ul {
        display: inline-block;
        margin: 0;
        padding: 0;
        /* For IE, the outcast */
        zoom:1;
        *display: inline;
    }
    .wrapper li {
        float: left;
        padding: 2px 5px;
        border: 1px solid black;
    }
</style>

<div class="wrapper">
    <ul>
        <li>Three</li>
        <li>Blind</li>
        <li>Mice</li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

更新

这是上面代码的jsFiddle链接.

  • 朋友不要让朋友使用Internet Explorer (9认同)
  • 这是非常完美的解决方案!因为我的<ul>是动态的. (7认同)
  • +1这样一个有用的解决方案.不幸的是,这似乎不适用于IE7,因为整个UL列表出现在屏幕左侧,而不是居中.你能发一个可以解决这个问题的调整吗?谢谢. (2认同)
  • 这是解决这个问题的绝佳方案 - 谢谢! (2认同)

Que*_*tin 131

因为ulli元素是display: block默认的 - 给它们自动边距和宽度小于它们的容器.

ul {
    width: 70%;
    margin: auto;
}
Run Code Online (Sandbox Code Playgroud)

如果你已经改变了它们的显示属性,或者做了一些覆盖正常对齐规则的东西(例如浮动它们),那么这将不起作用.

  • 设定宽度:自动; 并显示:inline-block; 会让你的ul表现得像一行文字.然后你可以使用text-align:center; 在父元素上.这也可以让你的ul在内容变化时增长和缩小,而不是固定宽度. (9认同)
  • 如果这不会让你开心,这可能会:http://stackoverflow.com/questions/2865380/how-do-i-center-align-horizo​​ntal-ul-menu (3认同)

Chr*_*ael 22

我喜欢flexbox:

ul {
  justify-content: center;
  display: flex;
}
Run Code Online (Sandbox Code Playgroud)


Das*_*ath 21

脚步 :

  1. style="text-align:center;"于母公司divul
  2. style="display:inline-table;"ul
  3. style="display:inline;"li

或使用

<div class="menu">
 <ul>
   <li>item 1 </li>
   <li>item 2 </li>
   <li>item 3 </li>
 </ul>
</div>

<style>
 .menu { text-align: center; }
 .menu ul { display:inline-table; }
 .menu li { display:inline; }
</style>
Run Code Online (Sandbox Code Playgroud)


DSA*_*sts 9

这是将UL置于任何DIV容器内部的更好方法.

此CSS解决方案不使用Width和Float属性.浮动:左侧和宽度:70%,当您需要在具有不同菜单项的不同页面上复制菜单时,会导致头痛.

我们使用填充和边距来确定文本/菜单项周围的空间,而不是使用宽度.另外,不要在LI元素中使用Float:Left,而是使用display:inline-block.

通过将你的LI左移,你将内容浮动到左边,然后你必须使用上面提到的一个Hack来集中你的UL.显示:inline-block为您创建Float属性(有点).它将您的LI元素转换为一个彼此并排放置的块元素(不浮动).

通过响应式设计和使用Bootstrap或Foundation等框架,在尝试浮动和居中内容时会出现问题.他们有一些内置的类,但从头开始做总是更好.对于动态菜单(例如Adobe Business Catalyst菜单系统),此解决方案要好得多.

可以在以下网址找到本教程的参考资料:http://html-tuts.com/center-div-image-table-ul-inside-div/

HTML

<div class="container">
        <ul>
            <li><a href="#">Button</a></li>
            <li><a href="#">Button</a></li>
            <li><a href="#">Button</a></li>
            <li><a href="#">Button</a></li>
            <li><a href="#">Button</a></li>
        </ul>
    </div>
Run Code Online (Sandbox Code Playgroud)

CSS

.container {
    text-align: center;
    border: 1px solid green;
}
.container ul {
    border: 2px solid red;
    display: inline-block;
    margin: 10px 0;
    padding: 2px;
}
.container li {
    display: inline-block;
}
.container li a {
    display: inline-block;
    background: #444;
    color: #FFF;
    padding: 5px;
    text-decoration: none;
}
Run Code Online (Sandbox Code Playgroud)


F.P*_*F.P 6

可能是

div ul
{
 width: [INSERT FIXED WIDTH]
 margin: 0 auto;
}
Run Code Online (Sandbox Code Playgroud)

要么

div li
{
text-align: center;
}
Run Code Online (Sandbox Code Playgroud)

取决于它应该是什么样子(或组合这些)

  • 后一个选项不会使列表项居中,而只会使它们的内联内容居中。 (2认同)