Использование flex для создания двух строк и одного столбца - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь использовать flexbox для создания макета столбца с элементом, «всплывающим» справа.

Примерно так :

enter image description here

Дело в том, что я не могу изменить HTML, поскольку это встроенная форма, поэтому я пытаюсь достичь этого с помощью чистого CSS.

Пока у меня есть следующее:

.form {
  display: flex;
  flex-direction: column;
  text-align: center;
}

.form-container {
  display: flex;
  flex-direction: column;
  text-align: center;
  justify-content: space-between;
}

.form-form {
  width: 100%;
}

form {
  display: flex;
  justify-content: center;
}

fieldset {
  border: 0;
}

textarea {
  resize: none;
}

.form-columns-2 {
  display: flex;
}

.form-columns-2 input:first-child {
  margin-bottom: .5em
}

.form-columns-1 textarea {
  height: 100%
}
.submit-wrapper{
  flex-direction:column;
}
<div class="form">
  <div class="form-container">
    <div class="form-form">
      <form>
        <fieldset class="form-columns-2">
          <input type="text" placeholder="test">
          <input type="text" placeholder="test">
        </fieldset>
        <fieldset class="form-columns-2">
          <input type="text" placeholder="test">
          <input type="text" placeholder="test">
        </fieldset>
        <fieldset class="form-columns-1">
          <textarea placeholder="test">Text</textarea>
        </fieldset>
        <div class="submit-wrapper">
          <div class="actions">
            <input type="submit" value="Submit">
          </div>
        </div>
      </form>
    </div>
  </div>
</div>

Редактировать:

Мне также нужна кнопка отправки на сидеть под текстовой области,но поскольку .submit-wrapper является прямым потомком form, единственный способ увидеть это - добавить flex-direction: column; к form.Однако это превращает весь макет в столбец, который мне не нужен.

1 Ответ

0 голосов
/ 10 декабря 2018

Вы применяете display: flex к неправильным элементам и к большему количеству элементов, чем нужно.

Проверьте это: https://codepen.io/anon/pen/dwPoEP

* {
  box-sizing: border-box;
}
fieldset{
  border:0;
}
textarea{
  resize:none;
}

form { // you want the form to be a flex box, not everything!
  display: flex;
  justify-content: center;
}
.form-columns-2 {
  display: flex; //you can use other options here, this works but you can use display: block on the inputs for example
}

// this 2 are just to make it look like the image
.form-columns-2 input:first-child {
  margin-bottom: .5em
}
.form-columns-1 textarea {
  height: 100%
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...