2016-12-05 90 views
4

我读这篇文章Almost complete guide to flexbox (without flexbox),我已经尝试使用“空间之间”,我有这样的代码:如何在html没有空白时平均分配li元素?

ul { 
 
    margin: 0; 
 
    padding: 0; 
 
    text-align: justify; 
 
} 
 
ul:after { 
 
    content: ""; 
 
    display:inline-block; 
 
    width:100%; 
 
} 
 
ul li { 
 
    list-style: none; 
 
    display: inline-block; 
 
}
<ul><li>Foo</li><li>Bar</li><li>Baz</li></ul> 
 
<ul> 
 
<li>Foo</li> 
 
<li>Bar</li> 
 
<li>Baz</li> 
 
</ul>

在第一 <ul>

<li>的不正确分布因为<li><li>标签末尾没有空格,所以当html是一行没有空格时,是否可以使用text-align: justify进行分配?没有flexbox可能吗?

我试着添加ul li:after但没有奏效。

+0

财产以后像[本](https://jsfiddle.net/tarqggjm/1/) –

+0

@Leothelion它巴兹后创造空间,最后一个元素应该对齐到右侧。 – jcubic

+0

不好意思说,但带着孩子的方法。如果你喜欢,然后检查[this](https://jsfiddle.net/tarqggjm/2/) –

回答

0

在这种情况下text-align: justify是不合适的,因为首先你需要允许列表项的宽度,那么text-align将工作。您可以使用%的宽度和text-align来对齐文本。

ul { 
 
    width:100%; 
 
    height: 100%; 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 

 
ul li { 
 
    float:left; 
 
    line-height:37px; 
 
    height:100%; 
 
    list-style-type:none; 
 
    margin:0; 
 
    overflow:hidden; 
 
    width: 33.33%; 
 
    background: red; 
 

 
} 
 
ul li span{ 
 
background: blue; 
 
display: block; 
 
width: 100%; 
 
}
<ul><li>Foo</li><li>Bar</li><li>Baz</li></ul> 
 
<ul> 
 
<li><span>Foo</span></li> 
 
<li><span>Bar</span></li> 
 
<li><span>Baz</span></li> 
 
</ul>

+0

这不会产生平均分配,你有最后一个李后空间。 – jcubic

+0

为什么修改宽度? –

+0

@jcubic,我加了'span'标签和bg颜色。空间在哪里? –