Настройка grid формы

256
25 ноября 2018, 23:20

Есть 4 поля Фамилия, Имя, Отчество, Дата рождения. Не получается настроить стиль таким образом чтобы они верно отображались на странице.

нужно чтобы когда страница раскрыты полностью формы выстраивались как 1 2 3 4.

когда страницу сжимаешь они бы перестраивались.

1 2

3 4

сейчас сделано так

.grid-container {
    width: 100%;
    display: inline;
    grid-gap: 20px 50px;
}
.grid-item {
    width: 25%;
    min-width: 250px;
}
<h:panelGroup id="holder_panel" layout="block">
    <div class="grid-container">
      <div class="item">some code</div>
      <div class="item">some code</div>
      <div class="item">some code</div>  
      <div class="item">some code</div>  
    </div>
</h:panelGroup>

и проблема вот в чем.

когда страница развернута, все ок.

а когда сжимаешь ее, то при вводе в поле 1 неверное информации строка снизу смещает поле 3 в сторону. см рисунок во вложении. отчество съехало

1 2
  3
4

как настроить форму?

Answer 1

Для бутстрапа 3 версии переменное число колонок делается так:

на мобилках будет

1
2
3
4

на планшетах

1 2
3 4

на десктопах

1 2 3 4

код:

<div class="row">
    <div class="col-xs-12 col-sm-6 col-md-3">
        <div class="form-group">
            <label for="lastName">Фамилия</label>
            <input type="text" class="form-control" id="lastName" placeholder="Фамилия">
        </div>
    </div>
    <div class="col-xs-12 col-sm-6 col-md-3">
        <div class="form-group">
            <label for="firstName">Имя</label>
            <input type="text" class="form-control" id="firstName" placeholder="Имя">
        </div>
    </div>
    <div class="col-xs-12 col-sm-6 col-md-3">
        <div class="form-group">
            <label for="secondName">Отчество</label>
            <input type="text" class="form-control" id="secondName" placeholder="Отчество">
        </div>
    </div>
    <div class="col-xs-12 col-sm-6 col-md-3">
        <div class="form-group">
            <label for="birthDate">Дата рождения</label>
            <input type="text" class="form-control" id="birthDate" placeholder="Дата рождения">
        </div>
    </div>
</div>

Дополнено:

если добавить ошибку валидации (любой текст) - такая же проблема будет – soledar10

Можно применить flex, чтобы увеличение высоты блока из-за текста об ошибке меняло и высоту соседа

.flex-row {
    display: flex;
    flex-flow: row wrap;
    align-items: stretch;
}
.flex-row .col-flex {
    display: flex;
}
.flex-row .col-flex > div[class*='col-'] {
    margin: -.3px; /* hack adjust for wrapping */
}

<div class="row row-flex">
    <div class="col-xs-12 col-sm-6 col-md-3 col-flex">
        ...
    </div>
</div>
Answer 2

Пример

@media screen and (max-width: 991px) { 
  [class*=col-]:nth-of-type(2n + 3) { 
    clear: left; 
  } 
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> 
<div class="row"> 
  <div class="col-xs-12 col-sm-6 col-md-3"> 
    <div class="form-group"> 
      <label for="lastName">Фамилия</label> 
      <input type="text" class="form-control" id="lastName" placeholder="Фамилия"> 
      <p>Error validation</p> 
    </div> 
  </div> 
  <div class="col-xs-12 col-sm-6 col-md-3"> 
    <div class="form-group"> 
      <label for="firstName">Имя</label> 
      <input type="text" class="form-control" id="firstName" placeholder="Имя"> 
    </div> 
  </div> 
  <div class="col-xs-12 col-sm-6 col-md-3"> 
    <div class="form-group"> 
      <label for="secondName">Отчество</label> 
      <input type="text" class="form-control" id="secondName" placeholder="Отчество"> 
    </div> 
  </div> 
  <div class="col-xs-12 col-sm-6 col-md-3"> 
    <div class="form-group"> 
      <label for="birthDate">Дата рождения</label> 
      <input type="text" class="form-control" id="birthDate" placeholder="Дата рождения"> 
    </div> 
  </div> 
</div>

READ ALSO
Адаптация под мобильные устройства

Адаптация под мобильные устройства

Сижу уже 4 часа голову ломаю , не получается и все , есть 2 картинки на главной странице сайта их нужно оптимизировать под мобустройства от минимального...

179
Выравнивание элементов top-right to bottom-left css

Выравнивание элементов top-right to bottom-left css

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

158
Как добавить плавность в Fullpage.js

Как добавить плавность в Fullpage.js

Как добавить необходимую плавность EaseInOutExpo в слайдер Fullpagejs

218
Отложенная загрузка Div

Отложенная загрузка Div

Подскажите, пожалуйста, как реализовать отложенную загрузку элементов при прокрутке страницыК примеру есть

173