#html #css
Вопрос:
У меня есть дочерний блок .body
, мне нужно сделать вертикальную прокрутку, если содержимое не подходит для родителя #container
. Просто прокручивайте содержимое внутри .body
и не прокручивайте .header
.
#container {
min-height: fit-content;
max-height: 50%;
overflow-y: auto;
border: 1px solid red;
overflow: hidden;
}
.body {
overflow-y: scroll;
height: inherit;
}
.item {
padding: 20px;
height: 70px;
border-bottom: 1px solid #ccc
}
<div id="container">
<div>
Header
</div>
<div class="body">
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
</div>
</div>
Мой полный код таков:
Ответ №1:
Чтобы сделать .body
его прокручиваемым, вы должны присвоить ему определенную высоту.
Это, в свою очередь, означает, что вы должны назначить #container
определенную высоту:
#container {
height: 50vh;
border: 1px solid red;
overflow: hidden;
}
.body {
overflow-y: scroll;
height: inherit;
}
.item {
padding: 20px;
height: 70px;
border-bottom: 1px solid #ccc
}
<div id="container">
<div>
Header
</div>
<div class="body">
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
</div>
</div>
Комментарии:
1. Вы изменили только высоту: 50vh;? Что делать, если мне нужен родительский контейнер с 80% полной высоты?
2. В полный рост чего? 🙂 Я предположил, что вы собираетесь использовать 50% высоты окна, поэтому, если вы хотите 80%, просто используйте
80vh
Ответ №2:
Привет,
Просто дайте заданную высоту конатайнеру, а не fit-content
подобный этому
#container {
min-height: fit-content;
max-height: 50%;
overflow-y: auto;
border: 1px solid red;
overflow:hidden;
height: 200px;
}
Смотрите Фрагмент ниже
#container {
min-height: fit-content;
max-height: 50%;
overflow-y: auto;
border: 1px solid red;
overflow:hidden;
height: 200px;
}
.body {
overflow-y:scroll;
height: inherit;
}
.item {
padding: 20px;
height: 70px;
border-bottom: 1px solid #ccc
}
<div id="container">
<div>
Header
</div>
<div class="body">
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
</div>
</div>
Ответ №3:
Вот ты где
#container {
height: 50vh;
border: 1px solid red;
display: flex;
flex-direction: column;
}
.body {
overflow-y: auto;
}
.item {
padding: 20px;
height: 70px;
border-bottom: 1px solid #ccc;
}
<div id="container">
<div>
Header
</div>
<div class="body">
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
<div class="item">
Item
</div>
</div>
</div>