Выравнивание элементов по горизонтали, находящихся в разных ячейках сетки, с помощью CSS Grid и Flexbox - PullRequest
0 голосов
/ 04 сентября 2018

В настоящее время я использую смесь между grid и flexbox, чтобы попытаться создать макет для формы.

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

Кроме того, я бы хотел, чтобы элементы label также оставались горизонтально выровненными.

Пожалуйста, предложите решения, которые НЕ требуют изменения разметки или использования Javascript.

В настоящее время, что у меня есть: enter image description here

Чего я пытаюсь достичь: enter image description here

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

HTML:

<form class="grid">
  <div class="group">
    <label for="input-1">Label 1</label>
    <input type="text" id="input-1" placeholder="placeholder" />
  </div>

  <div class="group">
    <label for="input-2">Label 2</label>
    <div class=range-wrapper>
      <input type="range" id="input-2" placeholder="placeholder" />
      <output>0</output>
    </div>
  </div>
</form>

SCSS:

html {
  box-sizing: border-box;
}
*, *::before, *::after {
  box-sizing: inherit;
}

body {
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 1.2rem;
}

.grid {
  width: 80%;
  max-width: 960px;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-gap: 40px 10px;

  padding: 50px;
  background: #ccc;
}

.group {
  display: flex;
  flex-direction: column;
  margin-top: auto;

  label {
    margin-bottom: 10px;
  }
}

input {
  font-size: inherit;

  &[type="text"] {
    padding: 14px;
  }
  &[type="range"] {
    width: 100%;
  }
}

.range-wrapper {
  display: flex;
  align-items: center;

  output {
  padding: 10px;
}

Вы также можете проверить кодекс здесь .

Большое спасибо!


** РЕДАКТИРОВАТЬ **

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

Пример многострочной метки: Codepen

1 Ответ

0 голосов
/ 04 сентября 2018

попробуйте это для своего "группового" класса. (или используйте новый класс для этого элемента с этим стилем)

.group {
  display: flex;
  flex-direction: column;
  justify-content: center;

  label {
    margin-bottom: 10px;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...