width: 100% съедает margin между блоками

Есть flex-контейнер. В нём четыре кнопки, они должны занимать 100% экрана. Между кнопками есть небольшой отступ в один пиксель. Для красоты. Но есть проблема: кнопки находятся внутри своих div-блоков, а эти div-блоки уже внутри flex-контейнера. Мы задали ширину для div, но не для кнопки и потому её размер минимально возможный.

Для решения этой проблемы я нашёл два способа:

  • Превратить div-блоки тоже в flex-контейнер с одним элементом и задать кнопке flex: 1 0 auto;
  • Задать для кнопки width: 100%

Оба способа работают, но во втором отступ между кнопками пропадает. Почему?

Да, я уже понял свою ошибку, надо было margin ставить для div-блоков, а не самих кнопок. Но я всё ещё не понимаю, почему этот margin исчезает.

/* Основной стиль */

.html, .body, .container {
  width: 100%;
}

.container {
  display: flex;
  /* border: 1px solid red; */
}

.button-container {
  width: 25%;
}

.button-container button {
  /* Тот самый пробел между кнопками */
  margin: 0 1px 0 0;
  background-color: #e0e0e0;
  font-size: 1.5rem;
  border: 0;
}

.button-container:last-child {
  margin: 0 0 0 0;
}

/* Первый способ расширить кнопку */
/*
.button-container {
  display: flex;
}

.button-container button {
  flex: 1 0 auto;
}
*/

/* Второй способ расширить кнопку */
.button-container button {
  width: 100%;
  height: 100%;
}
<div class="container">
  <div class="button-container"><button>1</button></div>
  <div class="button-container"><button>2</button></div>
  <div class="button-container"><button>3</button></div>
  <div class="button-container"><button>4</button></div>
</div>


Ответы (0 шт):