Горизонтальный сдвиг css
Я пытаюсь создать горизонтальную навигационную панель в css с 5 равномерно разнесенными ссылками. Html, надеюсь, будет выглядеть следующим образом:
<div id="footer">
<ul>
<li><a href="one.html">One</a></li>
<li><a href="two.html">Two</a></li>
<li><a href="three.html">Three</a></li>
<li><a href="four.html">Four</a></li>
<li><a href="five.html">Five</a></li>
</ul>
</div>
Итак, с помощью CSS я хочу разместить их равномерно в нижнем колонтитуле. Пока я использую это:
div#footer{
height:1.5em;
background-color:green;
clear:both;
padding-top:.5em;
font-size:1.5em;
width:800px;
}
div#footer ul{
margin:0;
padding:0;
list-style:none;
}
div#footer li{
width:155px;
display:inline-block;
text-align:center;
}
Это работает очень хорошо, но между лигами есть пробел, который я не хочу. Вот почему я использовал 155px вместо 160px для их ширины, между ними есть около 5px пространства. Откуда этот промежуток? Как я могу избавиться от него? Если я увеличиваю шрифт, расстояние увеличивается.
Ответы
Ответ 1
У меня это случилось со мной. К сожалению, это вызвано тем, что браузер выполняет разрывы строк между элементами списка и делает их пробелами. Чтобы исправить, измените свой HTML на:
<div id="footer">
<ul>
<li><a href="one.html">One</a></li><li><a href="two.html">Two</a></li><li><a href="three.html">Three</a></li><li><a href="four.html">Four</a></li><li><a href="five.html">Five</a></li>
</ul>
</div>
Ответ 2
Если вы используете это:
div#footer li{
width:160px;
display:block;
float: left;
text-align:center;
}
Все выглядит прекрасно: D
Ответ 3
Промежутки между вашими элементами <li>
обусловлены пробелами и возвратами каретки между ними из-за встроенного стиля. Если вы пишете:
<li><a href="one.html">One</a></li><li><a href="two.html">Two</a></li><li><a href="three.html">Three</a></li><li><a href="four.html">Four</a></li><li><a href="five.html">Five</a></li>
Вы не увидите больше места между ними.
Я не уверен, будет ли встроенный блок хорошо отображаться на IE6, поэтому вы можете попробовать использовать метод float.
Ответ 4
Это полностью разрешено CSS flexbox.
CSS-Tricks имеют отличную запись здесь, а пример Codepen использует <ul>
.
.flex-container {
padding: 0;
margin: 0;
list-style: none;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-flex-flow: row nowrap;
justify-content: space-around;
}
.flex-item {
background: tomato;
padding: 5px;
margin: 0px;
line-height: 40px;
color: white;
font-weight: bold;
font-size: 2em;
text-align: center;
flex: 1 1 auto;
}
<ul class="flex-container">
<li class="flex-item">1</li>
<li class="flex-item">2</li>
<li class="flex-item">3</li>
<li class="flex-item">4</li>
<li class="flex-item">5</li>
<li class="flex-item">6</li>
</ul>
Ответ 5
div#footer ul{
margin:0;
padding:0;
list-style:none;
}
div#footer li{
width:155px;
float:left;
display:block;
}
Этот код позиционирует li горизонтально, а промежутки между ними. Если вы хотите добавить пространство между элементами li:
div#footer li{
width:155px;
margin-right: 5px; //5px Space between li elements
float:left;
display:block;
}