Как сделать так, чтобы два столбца (один с формой, а другой с изображением) строки начальной загрузки были одинаковой высоты и отзывчивыми - PullRequest
0 голосов
/ 30 октября 2019

У меня есть две колонки начальной загрузки, одна имеет форму, другая имеет изображение. Разделение изображения установлено на 100% ширины, которая при изменении размера экрана реагирует. Но форма должна быть на одной высоте, независимо от размера экрана.

enter image description here

Пожалуйста, используйте код ниже

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<div class="text-page-contents">
  <div class="row">
    <div class="col-md-6">
      <p class="headingdescription" style="padding-left:0px;text-align:left">Request a Office space</p>
      <p>Bla bla bla</p>
      <div class="col-md-6" style="padding-left:0px">
        <input class="formtextarea" placeholder="Full Name " />
        <input class="formtextarea" placeholder="Job Title" />
        <input class="formtextarea" placeholder="Phone Number" />
      </div>
      <div class="col-md-6" style="padding-left:0px">
        <input class="formtextarea" placeholder="Business Name" />
        <input class="formtextarea" placeholder="Email Address" />
        <input class="formtextarea" placeholder="Zipcode" />
      </div>
      <input class="formtextarea" placeholder="Message" style="height: 100px !important" /> <br> <br>
      <button class="actionbuttons" href="">SUBMIT REQUEST</button> &nbsp;&nbsp; &nbsp;&nbsp;
    </div>
    <div class="col-md-6">
      <img src="http://dummyimage.com/600/f0d/&text=illo.png" width="100%">
    </div>
  </div>
</div>

Заранее благодарим за помощь.

Ответы [ 3 ]

1 голос
/ 30 октября 2019

Если я понял, вы хотите, чтобы изображение выровнялось по нижней части формы при уменьшении. Вы можете выровнять сам столбец с классом mt-auto (margin-top: auto).

Демо:

form {
  background: yellow;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" />
<div class="text-page-contents">
  <div class="row">
    <form class="col-md-6 mt-auto ">
      <p class="headingdescription" style="padding-left:0px;text-align:left">Request a Office space</p>
      <p>Bla bla bla</p>
      <div class="col-md-6" style="padding-left:0px">
        <input class="formtextarea" placeholder="Full Name " />
        <input class="formtextarea" placeholder="Job Title" />
        <input class="formtextarea" placeholder="Phone Number" />
      </div>
      <div class="col-md-6" style="padding-left:0px">
        <input class="formtextarea" placeholder="Business Name" />
        <input class="formtextarea" placeholder="Email Address" />
        <input class="formtextarea" placeholder="Zipcode" />
      </div>
      <input class="formtextarea" placeholder="Message" style="height: 100px !important" /> <br> <br>
      <button class="actionbuttons" href="">SUBMIT REQUEST</button> &nbsp;&nbsp; &nbsp;&nbsp;
    </form>
    <div class="col-md-6 mt-auto">
      <img src="http://dummyimage.com/600/f0d/&text=illo.png" width="100%">
    </div>
  </div>
</div>

Примечание , класс align-items-end на родительском элементе также подходит для выравнивания обоих столбцов по низу.

form {
  background: yellow;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" />
<div class="text-page-contents">
  <div class="row align-items-end">
    <form class="col-md-6 ">
      <p class="headingdescription" style="padding-left:0px;text-align:left">Request a Office space</p>
      <p>Bla bla bla</p>
      <div class="col-md-6" style="padding-left:0px">
        <input class="formtextarea" placeholder="Full Name " />
        <input class="formtextarea" placeholder="Job Title" />
        <input class="formtextarea" placeholder="Phone Number" />
      </div>
      <div class="col-md-6" style="padding-left:0px">
        <input class="formtextarea" placeholder="Business Name" />
        <input class="formtextarea" placeholder="Email Address" />
        <input class="formtextarea" placeholder="Zipcode" />
      </div>
      <input class="formtextarea" placeholder="Message" style="height: 100px !important" /> <br> <br>
      <button class="actionbuttons" href="">SUBMIT REQUEST</button> &nbsp;&nbsp; &nbsp;&nbsp;
    </form>
    <div class="col-md-6 ">
      <img src="http://dummyimage.com/600/f0d/&text=illo.png" width="100%">
    </div>
  </div>
</div>
0 голосов
/ 30 октября 2019

Это можно сделать с помощью Bootstrap, но нужно решить 3 проблемы:

  1. изображение должно составлять 100% от его родительской высоты, но не должно влиять на это высота родительского столбца, Решение: сделать его фоном изображение:
<div class="col-md-6 col-sm-12 image-col">

<style>
  .row .image-col {
    background-image: url(url(http://dummyimage.com/600/f0d/&text=illo.png);
    background-repeat: no-repeat;
    background-size: auto 100%;
    background-position: center right;
  }
</style>
когда окно меньше среднего (<768px), изображение оборачивается под формой, а его высота падает. <strong>Решение: установить высоту изображения для этого случая с помощью медиазапроса:
/* small screens (the default) */
<style>
  .row .image-col {
    background-image: url(http://dummyimage.com/600/f0d/&text=illo.png);
    background-repeat: no-repeat;
    background-size: 100% auto;
    height: 20rem;    /* image height when image wraps underneath form */
    background-position: center right;
  }

  /* medium and greater screens */  
  @media (min-width: 768px) {
    .row .image-col:last-child { 
      background-size: auto 100%;
      height: auto;
    }
  }
</style>
Для маленьких экранов (меньше среднего, когда изображение оборачивается ниже формы), нам нужно, чтобы оба столбца имели ширину 100%. Поэтому нам нужно указать это с помощью начальной загрузки, добавив класс col-sm-12 в оба столбца.

Вот рабочая скрипка .

0 голосов
/ 30 октября 2019

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

Причина, по которой изображение ведет себя отзывчиво, заключается в том, что оно имеет соотношение сторон. Это означает, что у него есть своя собственная высота и ширина. Здесь вы устанавливаете только ширину, и, поскольку соотношение сторон, высота изображения регулируется соответствующим образом.

Элементы формы имеют фиксированный размер по умолчанию. Они не должны масштабироваться как изображения.

Вместо этого вы можете установить ширину 100% для входных данных и позволить ширине определяться шириной родительского контейнера. Однако это никак не повлияет на высоту элементов формы.

CSS для этого выглядит следующим образом:

input[type="text"] {
    width: 100%;
    /*you also need to change box-sizing,
    since the input itself already has a padding
    and a border and would exceed the boundaries
    of the parent container because of that:*/
    box-sizing: border-box;
}

Обратите внимание, что я использовал [type="text"]. Этот селектор будет работать только в том случае, если вы установите текстовый ввод на своих входах так же, как это:

<input type="text" class="formtextarea" placeholder="Business Name">

Если вы хотите, чтобы ваш макет корректировался в соответствии с шириной или высотой экрана, я предлагаю вам иметьпосмотрите на медиа запросы в css.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...