Вот кодекс моей проблемы: https://codepen.io/maximilian118/pen/VwYomJv
У меня есть боковая панель для этого компонента React, которая содержит раздел комментариев.
Высота боковой панели определяется изображением. Div "creator" в верхней части боковой панели и поле ввода в нижней части имеют абсолютную высоту, и я хочу использовать flex-grow в разделе комментариев, чтобы заполнить оставшееся пространство между ними.
Проблема в том, что, когда я добавляю больше детей в раздел комментариев, он оборачивает их все и увеличивается в высоту:
Я бы хотел высоту раздела комментариев остаться без изменения абсолютной высоты и просто использовать overflow-y: scroll. Как это можно сделать?
Реагировать JS:
<div className={`photo-card-wrapper ${imgClicked}`}>
<div className="img-wrapper" onClick={() => imgClickedHandler()}>
{img}
</div>
<div className="sidebar">
<div className="creator">
{profileImg}
<div className="creator-info">
<h5>{name}</h5>
<p>{username}</p>
</div>
</div>
<div className="comments">
{comments.map(comment => (
<div className="comment">
<img alt="Profile Image" src={require(`../../static/defaults/${comment.profileImg}`)}/>
<p>{comment.comment}</p>
</div>
))}
</div>
<input type="text" name="comment" id="comment" placeholder="Write a comment" />
</div>
</div>
S CSS:
.photo-card-wrapper {
width: 100%;
display: flex;
border-radius: 5px;
overflow: hidden;
margin-bottom: 15px;
border: 1px solid $color-1;
h5 {
font-weight: 400;
letter-spacing: 1px;
cursor: pointer;
}
p {
font-size: 0.7em;
cursor: pointer;
color: $color-2;
}
.img-wrapper {
display: flex;
width: 75%;
img {
width: 100%
}
}
.sidebar {
width: 25%;
background: $white;
display: flex;
flex-flow: column nowrap;
justify-content: space-between;
.creator {
width: 100%;
padding: 10px;
display: flex;
align-items: center;
border-bottom: 1px solid $color-1;
box-sizing: border-box;
cursor: pointer;
img {
width: 40px;
height: 40px;
border-radius: 40px;
background-image: url('../../static/defaults/placeholder.png');
background-size: contain;
margin-right: 10px;
flex-shrink: 0;
}
.creator-info {
height: 100%;
display: flex;
flex-flow: column nowrap;
justify-content: space-evenly;
}
}
.comments {
width: 100%;
padding: 10px;
flex-grow: 1;
box-sizing: border-box;
overflow-y: scroll;
.comment {
margin-bottom: 10px;
display: flex;
cursor: pointer;
p {
background-color: $color-1;
border-radius: 5px;
padding: 2px 5px;
}
img {
width: 20px;
height: 20px;
border-radius: 20px;
background-image: url('../../static/defaults/placeholder.png');
background-size: contain;
margin-right: 5px;
flex-shrink: 0;
}
}
}
input {
height: 35px;
border: none;
font-size: 0.9em;
padding: 5px 10px;
box-sizing: border-box;
border-bottom-right-radius: 5px;
border-top: 1px solid $color-1;
}
}
}
.img-clicked {
.img-wrapper {
width: 100vw;
height: 100vh;
background: $black;
position: fixed;
flex-flow: column nowrap;
justify-content: center;
border-radius: 0px;
border: none;
top: 0;
left: 0;
img {
border-radius: 0px !important;
max-width: 100vw;
max-height: 100vh;
object-fit: contain;
}
}
.sidebar {
display: none;
}
}