Горизонтальное выравнивание блоков по ширине строки

С появлением модели Flexbox значительно упростилась задача выравнивания блоков, в частности — горизонтального выравнивания блоков по ширине строки (например, для выравнивания пунктов меню).

Допустим мы имеем такую HTML-заготовку для меню:

<ul class="menu">
  <li class="item">О компании</li>
  <li class="item">Услуги</li>
  <li class="item">Лицензии</li>
  <li class="item">Фотогалерея</li>
  <li class="item">Контакты</li>
</ul>

И такой CSS-код, помогающий это меню лучше визуализировать.

.menu {
  width: 100%;
  margin: 0;
  padding: 0;
  list-style-type: none;  
  outline: 1px solid green;
}
.item {
  display: inline-block;
  background-color: yellow;
}

Пока пункты меню не выровнены по ширине.

Но стоит добавить всего пару строчек CSS и задача выравнивания решается.

//Решение с Flexbox
.menu {
  display: flex;
  justify-content: space-between;
  width: 100%;
  margin: 0;
  padding: 0;
  list-style-type: none;  
  outline: 1px solid green;
}
.item {
  display: inline-block;
  background-color: yellow;
}

Но иногда требуется решение без использования Flexbox, например, когда требуется поддержка IE. Выглядит это решение так:

// Решение без Flexbox
.menu {
  width: 100%;
  margin: 0;
  padding: 0;
  list-style-type: none;  
  outline: 1px solid green;
  text-align: justify;
  font-size: 0;
}
menu:after {
  content: '';
  display: inline-block;
  width: 100%;
}
.item {
  display: inline-block;
  background-color: yellow;
  font-size: 16px;
}

Метки: , ,


«
»