Я некоторое время пытался заставить это форматирование работать. Я нашел так много близких примеров того, что я хочу, но я просто не могу понять, как это правильно.
Я пытаюсь получить форму, которая "всплывала бы" через JS, чтобы кто-то мог ее заполнить. в. У меня нет проблем с JS и другими стилями, поэтому я сократил это до самого базового c примера, который я могу, который все еще иллюстрирует то, что я пытаюсь сделать.
У меня есть область заголовка, которая имеет «имя» и «описание» для заполнения и, что наиболее важно, может иметь несколько других динамически добавляемых полей. Область заголовка может увеличиваться на поле или два, поэтому высота точно не определена. Я хочу, чтобы остальная часть формы (прокручиваемый список) увеличивалась или уменьшалась в зависимости от добавленного содержимого заголовка.
Я прочитал так много ответов / предложений и попробовал, display: flex; дисплей: стол; и дисплей: сетка; и ничто из того, что я делаю, кажется, не работает правильно.
Я думаю, что мне просто не хватает чего-то маленького (или нет), я сейчас нахожусь в тупике и потратил несколько дней, просто пытаясь выполнить эту форму .
Вот моя базовая форма c без всех моих попыток, и все, что я хочу сделать, - это прокрутить «форму-детали» в оставшееся пространство «контейнера». Я знаю, что смогу заставить его работать, если я жестко закодирую высоту, однако, как я уже говорил выше, это также может динамически добавлять дополнительный контент в «form-header», поэтому высота «form-header» не известно.
По сути, мне просто нужно, чтобы розовая область оставалась в зеленой зоне (и прокручивалась) с динамической c высотой синей области (два необязательных поля могут скрываться и отображаться в зависимости ...).
Вот CSS
.container {
position:absolute;
left:50px;
top: 50px;
width: 400px;
height: 400px;
background-color: lightgreen;
text-align: center;
}
.title {
margin-top:5px;
}
.form-header {
padding-bottom:10px;
margin: 5px 5px 5px 5px;
border-bottom: 2px solid black;
background-color: lightblue;
}
.form-header input, textarea {
width: 95%;
}
.form-detail {
margin: 5px 5px 5px 5px;
background-color: pink;
overflow-y: scroll;
}
Вот HTML
<div class="container">
<form>
<div class="form-header">
<div class="title">Name</div>
<div><input type="text"></div>
<div class="title">Description</div>
<div><textarea type="text" rows="5"></textarea></div>
<div class="title">Optional 1</div>
<div><input type="text"></div>
<div class="title">Optional 2</div>
<div><input type="text"></div>
</div>
<div class="title">List</div>
<div class="form-detail">
<div><input type="text"></div>
<div><input type="text"></div>
<div><input type="text"></div>
<div><input type="text"></div>
<div><input type="text"></div>
<div><input type="text"></div>
<div><input type="text"></div>
<div><input type="text"></div>
<div><input type="text"></div>
<div><input type="text"></div>
<div><input type="text"></div>
<div><input type="text"></div>
<div><input type="text"></div>
<div><input type="text"></div>
<div><input type="text"></div>
</div>
</form>
</div>
Fiddle: (https://jsfiddle.net/logan5_42/nz418o9d/14/)