Обновить

Комментарии 5

А как бы задать параметры флексирования компонента разные для разных осей, чтобы поле ввода числа тянулось по горизонтали, но не растягивалось по вертикали независимо от внешнего направления потока?

Что-то мне кажется, что я вообще не понял вопрос. Но про растягивание поля ввода можно посмотреть в сторону field-sizing

<div class="row">
  <input placeholder="ok" />
  <input placeholder="ok" />
</div>
<div class="col">
  <input placeholder="wtf" />
  <input placeholder="wtf" />
</div>
html, body {
  width: 100%;
  height: 100%;
}
div {
  display: flex;
  height: 50%;
}
.row {
  flex-direction: row;
}
.col {
  flex-direction: column;
}
input {
  flex: 1 1 auto; // flex-horizontal: 1 1 auto
  height: 1rem; // flex-vertical: 0 0 auto
}

Ага, теперь понял. Пуленепробиваемого решения у меня нет

Я так понял, что

.col input {
  flex-grow: 0;
}

не вариант для решения =)

Тогда можно попробовать гриды с auto-flow

.row {
  grid-auto-flow: column;
  grid-auto-columns: 1fr;
}

.col {
  grid-auto-flow: row;
  align-content: start;
}

input {
  height: 1rem;
}



Ещё есть современный вариант, который не везде будет работать со style queries. По сути на контенере можно проверить какое CSS-свойство с каким значением указано и в зависимости от этого у ребёнка изменить значение

div {
  container-type: style;
}

@container style(flex-direction: column) {
  input {
    flex-grow: 0;
  }
}

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

Как-то не завелись у меня ни тот, ни другой код.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации