水平对齐父 div 中的 UL 项目,两边都没有空格?

Posted

技术标签:

【中文标题】水平对齐父 div 中的 UL 项目,两边都没有空格?【英文标题】:Horizontally align UL items within parent div with no space on either side? 【发布时间】:2015-01-30 08:08:24 【问题描述】:

我正在制作一个导航菜单,但遇到了一个常见问题,即需要在每个列表项周围以相等的间距水平对齐 UL。但是,此列表位于宽度设置为 1100px 的 div 内,我需要在 div 的左侧或右侧没有空间——第一个和最后一个列表项需要到达 div 的一侧.

这是我现在拥有的无序列表:

ul
            width:100%;
            display:table;
            list-style-type:none;
            padding:0;
            border-spacing:5px;
            li
                display:table-cell;
                padding:0 30px;
            
        

正如我所说,这个无序列表位于另一个宽度设置为 1100 像素的 div 中。我应该怎么做才能使列表拉伸 div 的整个宽度?

【问题讨论】:

你能在小提琴中重现你的问题吗? 你是这样设置的吗? jsfiddle.net/abhitalks/q4peetcj我假设您希望第一个和最后一个项目与 div 齐平? 是的,正要分享这个:jsfiddle.net/9k211ppj/1 我希望它们与 div 齐平,左侧或右侧没有额外的间距,是的 @abhitalks 它们已经被刷新。看到红色边框,它们已经延伸到蓝色 div 的末尾了。 【参考方案1】:

1) 在容器上设置text-align:justify

2) 使用伪元素将列表项拉伸到列表宽度的 100%

FIDDLE

ul 
  width: 800px;
  text-align: justify;
  list-style-type: none;
  padding: 0;
  background: yellow;

ul:after 
  content: '';
  display: inline-block;
  width: 100%;

li 
  display: inline-block;
  padding: 0 30px;
  text-align: center;
  background: tomato;
<div id="explore-nav">
  <ul>
    <li>Example</li>
    <li>Example</li>
    <li>Example</li>
    <li>Example</li>
  </ul>
</div>

【讨论】:

【参考方案2】:

猜你的标记看起来像这样。

ul 
  width: 100%;
  display: table;
  list-style-type: none;
  padding: 0;
  border-spacing: 5px;
  border: 1px solid black;

li 
  display: table-cell;
  padding: 0 30px;
  text-align: center;
  background-color: #EDEDED;
  border: 1px solid black;

#container 
  width: 1100px;
  margin: 0 auto;
<div id="container">
  <ul>
    <li>Test</li>
    <li>Test</li>
    <li>Test</li>
    <li>Test</li>
    <li>Test</li>
  </ul>
</div>

【讨论】:

以上是关于水平对齐父 div 中的 UL 项目,两边都没有空格?的主要内容,如果未能解决你的问题,请参考以下文章

水平 ul 导航与右侧对齐

#menu div 中的垂直居中 UL 菜单和 IMG

急!CSS中,怎么让ul li中的图片和文字横向水平居中

HTML CSS中如何实现DIV中的图片水平垂直居中对齐

使父DIV中的UL对齐中心

固定位置 div 中的垂直对齐