#html #css #sass
#HTML #css #sass
Вопрос:
Мне нужно сделать прокручиваемый блок по оси y внутри left-navbar
. И высота этого блока должна заполнять все свободное пространство left-navbar
. Таким образом, эта left-navbar
высота составляет 100% страницы и не более.
Но history-overflow не прокручивается, и отображаются все history-item
элементы, поэтому они сделали всю left-navbar
высоту больше высоты страницы.
Кроме того, когда высота страницы уменьшается, history-overflow
следует заполнять только свободное пространство, чтобы сделать left-navbar
высоту не более 100%. Как это сделать?
Пример песочницы Codepen:https://codepen.io/car1ot/pen/zYqLqKB
HTML-код:
<div className="left-navbar">
<div className="history">
<label>History</label>
<div className="history-overflow">
<div className="history-item">*...some content here...*</div>
*...more history-item(s) here...*
</div>
</div>
</div>
CSS (scss) код:
div.left-navbar {
display: flex;
flex-direction: column;
justify-content: space-between;
width: 290px;
height: 100%;
padding: 25px 20px;
box-sizing: border-box;
div.history {
display: flex;
flex-direction: column;
div.history-overflow {
margin-top: 8px;
margin-right: -20px;
padding-right: 14px;
overflow-y: scroll;
div.history-item {
display: flex;
align-items: center;
flex-shrink: 0;
padding: 0 16px 0 6px;
height: 40px;
width: 100%;
border-radius: 7px;
margin-bottom: 8px;
box-sizing: border-box;
}
}
}
}
Комментарии:
1. Просто предположение, но попробуйте добавить
overflow: hidden
к.history
и.left-navbar
. Трудно сказать, если вы можете предоставить jsfiddle / codepen для воспроизведения проблемы, было бы проще.2. Это не помогло бы…
Ответ №1:
Если вы установите overflow: hidden
значение .history
и max-height: 100vh
на .left-navbar
, я думаю, это делает то, что вы хотите. Не уверен в контексте вашего полного макета (возможно, вы не хотите использовать 100vh, но там другое значение). Важной частью является то, что вы должны где-то ограничить высоту.
Комментарии:
1. Это не работает. Пожалуйста, ознакомьтесь с codepen, я добавил: codepen.io/car1ot/pen/zYqLqKB
2. Я попытался добавить эти 2 свойства в раздел кода, которым вы поделились, и это приводит к тому, что навигационная панель .left не увеличивается более чем на 100 вч, и содержимое можно прокручивать, я не уверен, какую проблему вы видите.
Ответ №2:
Если я правильно вас понял, это ваше решение:
body { padding:0; margin:0; }
div.left-navbar {
display: flex;
flex-direction: column;
justify-content: space-between;
width: 290px;
height: 100vh; /* This */
padding: 25px 20px;
box-sizing: border-box;
background: rgba(#000, 0.1);
div.history {
display: flex;
flex-direction: column;
height:100%; /* This */
div.history-overflow {
margin-top: 8px;
margin-right: -20px;
padding-right: 14px;
background: rgba(blue, 0.1);
overflow-y:scroll;
div.history-item {
display: flex;
align-items: center;
padding: 0 16px 0 6px;
height: 100px;
width: 100%;
border-radius: 7px;
margin-bottom: 8px;
box-sizing: border-box;
background: rgba(#000, 0.075);
}
}
}
}