#html #css #flexbox
#HTML #css #flexbox
Вопрос:
Я пытаюсь создать что-то похожее на этот макет в веб-интерфейсе Spotify с помощью flexbox:
Желаемый результат:
.
Идея в том, что я хотел бы иметь два равных столбца с левой и правой секциями, где левая была бы изображением высотой 100%, а правая секция отображалась бы в двух равных столбцах. Проблема в том, что я не могу получить правильные две текстовые строки для отображения в виде столбцов, хотя я пытался использовать flex-direction: column и flex-wrap: wrap как для родительского, так и для гибкого элемента.
Вот мой код:
**HTML**
<footer>
<div class="song-info">
<img src="https://via.placeholder.com/56x56" alt="Song cover">
<span class="song-name">Silent Song</span>
<span class="artist-name">Daniel Rossen</span>
</div>
<div class="song-controls">Lorem Ipsum</div>
<div class="song-volume">Lorem Ipsum</div>
</footer>
**CSS**
footer .song-info {
max-width: 15%;
display: flex;
}
footer .song-info span {
display: flex;
flex-direction: column;
height: 50%;
flex-wrap: wrap;
}
Я все еще получаю это:
Пока я хочу, чтобы .song-name и .song-volume были столбцами, как на начальном скриншоте.
Комментарии:
1. Скриншот вашего текущего состояния, похоже, соответствует вашему описанию наличия «правильного раздела… отображается в двух равных столбцах.» На скриншоте из Spotify нужный раздел организован в виде строк. Возможно ли, что вы перепутали свои определения здесь?
2. Перенесите интервалы вашей песни и исполнителя в новый элемент или используйте grid вместо flex (я предпочитаю grid, чтобы вам не приходилось добавлять дополнительные элементы)
3. Спасибо @arieljuod, попробую
Ответ №1:
Вы пытаетесь добавить display: flex
и flex-direction:column
к обоим промежуткам.
Добавьте контейнер вокруг него, код должен выглядеть следующим образом (я добавил немного симпатичного оформления):
footer {
background-color: black;
width: 400px;
}
.song-info {
display: flex;
align-items: center;
margin-top: 20px;
font-family:helvetica;
color: #fff;
padding: 10px;
}
.song-info img {
height: 60px;
width: 60px;
margin-right: 20px;
object-fit: contain;
}
.artist-container {
display: flex;
flex-direction: column;
}
.song-name {
font-weight: bold;
margin-bottom: 5px;
}
<footer>
<div class="song-info">
<img src="https://images.genius.com/60712a7b6cbcc792502d877fb9a170c5.1000x1000x1.jpg" alt="Song cover">
<div class="artist-container">
<span class="song-name">EARFQUAKE</span>
<span class="artist-name">Tyler, The Creator</span>
</div>
</div>
</footer>