Почему align-self: stretch не работает с гибким элементом?

У меня вопрос по css flex. Мой код:

.box {
  width: 300px;
  height: 300px;
  background: aqua;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: left;
  align-items: baseline;
  align-content: stretch;
}

.item {
  width: 50px;
  height: 50px;
  background: rgb(243, 62, 92);
  font-size: 13px;
  color: #fff;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  /* align-self: center; */
  align-items: center;
}

.box .one {
  /* padding-top: 20px; */
  background: red;
  /* order: 1; */
  /* flex-shrink: 1; */
  align-self: stretch;
}

.box .two {
  background: coral;
  order: 2;
  flex-shrink: 1;
}

.box .three {
  background: forestgreen;
  order: 31;
  flex-shrink: 1;
}

.box .four {
  background: tomato;
  order: 4;
}
<div class = "box">
  <div class = "item one">项目1</div>
  <div class = "item two">项目2</div>
  <div class = "item three">项目3</div>
  <div class = "item four">项目4</div>
</div>

Почему align-self: stretch не работает с гибким элементом?

У меня есть гибкий контейнер с несколькими гибкими элементами, и я хочу растянуть один из элементов в поперечном направлении, используя свойство align-self: stretch;. Однако предмет не выглядит растянутым, и я не уверен, почему это происходит. Можете ли вы помочь мне понять, почему align-self: stretch; не работает в этом случае?

Спасибо.

удалить высоту этого элемента

Temani Afif 12.04.2023 15:14

Если я добавлю height: 100% к box-one - растягивается только первый элемент, остальные остаются в том же положении, это то, что вам нужно? Это не работает без настройки на 100%, потому что ваш элемент div получил личную высоту.

TheNikCD 12.04.2023 15:19
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
2
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы определяете высоту гибкого элемента, это отменяет свойство align-self.

Удалите height: 50px на этом элементе, и align-self: stretch будет работать.

Полное объяснение здесь: Как flex-wrap работает с align-self, align-items и align-content?

.box {
  width: 300px;
  height: 300px;
  background: aqua;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: left;
  align-items: baseline;
  align-content: stretch;
}

.item {
  width: 50px;
  height: 50px;
  background: rgb(243, 62, 92);
  font-size: 13px;
  color: #fff;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  /* align-self: center; */
  align-items: center;
}

.box .one {
  /* padding-top: 20px; */
  background: red;
  /* order: 1; */
  /* flex-shrink: 1; */
  align-self: stretch;
  height: auto; /* new */
}

.box .two {
  background: coral;
  order: 2;
  flex-shrink: 1;
}

.box .three {
  background: forestgreen;
  order: 31;
  flex-shrink: 1;
}

.box .four {
  background: tomato;
  order: 4;
}
<div class = "box">
  <div class = "item one">项目1</div>
  <div class = "item two">项目2</div>
  <div class = "item three">项目3</div>
  <div class = "item four">项目4</div>
</div>

Другие вопросы по теме