Подтвердить что ты не робот

Как распределить элементы по горизонтали с помощью CSS?

Я хотел бы распределить несколько элементов списка по горизонтали на панели, и я хочу сделать код модульным, чтобы он автоматически настраивал пространство между элементами, когда я вставляю больше.

Я хочу первый элемент с левой стороны, а правый элемент - с правой стороны, а остальные - между ними. Все они имеют равное пространство между собой. Подумайте о разделении сегмента линии на несколько частей, элементы будут отмечать точки разделения, а также голову/хвост исходного сегмента линии.

Я попробовал несколько решений и нашел некоторые онлайн, но они не делают то, что я хочу. Они просто сосредотачивают все больше, как поместить каждый элемент в середину каждой строки в соответствии с моей предыдущей аналогией.

Может ли кто-нибудь предложить хорошее решение в CSS?

4b9b3361

Ответ 1

Вы можете делать то, что используете после inline-block, псевдо-элементов и text-align: justify;, но оно будет работать только в IE8 и выше.

Вот код:

<!-- HTML -->

<ul>
    <li>List Item 1</li>
    <li>List Item 2</li>
    <li>List Item 3</li>
    <li>List Item 4</li>
</ul>

​
/* CSS */

ul {
    text-align: justify;
}
ul:after {
    content: '';
    display: inline-block;
    width: 100%;
}
ul:before {
    content: '';
    display: block;
    margin-top: -1.25em;
}
li {
    display: inline-block;
    margin-right: -.25em;
    position: relative;
    top: 1.25em;
}

Демо-версия: http://jsfiddle.net/joshnh/UX9GU/  

Ответ 2

Существует чистое решение:

http://radiatingstar.com/distribute-divs-images-equaly-line

#container {
    text-align: justify;
}
#container > div {
    width: 100px; /* Declare your value. Can be in relative units. */
    display: inline-block;
    vertical-align: top;
}
#container:after {
    content: "";
    width: 100%;
    display: inline-block;
}

Ответ 3

В качестве дополнения к joshnh ответьте, если у кого-то есть такая же проблема:

Остерегайтесь: text-align: justify; требуется пространство после каждого элемента display: inline-block; для работы. В противном случае элементы рассматриваются как одно слово и не будут распространяться по горизонтали.

Так что это не сработает:

<!-- HTML -->
<ul><li>Item 1<li><li>Item 2<li><li>Item 3<li><li>Item 4<li></ul>

Но это будет:

<!-- HTML -->
<ul>
  <li>Item 1<li>
  <li>Item 2<li>
  <li>Item 3<li>
  <li>Item 4<li>
</ul>

У меня была эта проблема, потому что мы уменьшаем нашу HTML-разметку, а minifier помещает все в одну строку.