У меня могут быть проблемы с пониманием того, как CSS-сетки и flex работают вместе.У меня есть верхняя панель навигации, которая охватывает весь экран, область основного содержимого, боковая панель и нижний колонтитул, которые я сделал с помощью сеток CSS.
Верхняя панель навигации отображается как flex, где логотип и меню элементов div отображаютсярасположены (flex-direction: column) вертикальноВ мобильном представлении я хотел сделать так, чтобы логотип и меню элементов div (flex-direction: column) располагались горизонтально.
Вот в чем проблема:
HTML:
<header id = "main-header">
<div class="container nav-flex">
<div class="site-logo">
<div>
beautiful blog
</div>
</div>
<div class="main-header-nav">
<div>hello</div>
<label for="toggle">☰</label>
<div class="menu-nav">
</div>
</div>
</div>
</header>
CSS:
#main-header {
grid-area: main-header;
text-align: center;
}
.main-area {
grid-area: ct-main;
}
.side-area {
grid-area: ct-side;
}
.footer-area {
grid-area: ft;
}
.nav-flex {
background: #eee;
display: flex;
flex-direction: row;
}
.main-header-nav {
display: flex;
flex-direction: row;
align-items: center; /*vertically centers items*/
justify-content: center; /*centers items*/
}
.site-logo {
flex: 3;
background: #eee;
}
.main-header-nav {
flex: 1;
background: #ddd;
}
.container {
display: grid;
grid-template-columns: 2fr 1fr;
grid-template-areas:
"main-header main-header"
"ct-main ct-side"
"ft ft";
max-width: 960px;
margin: 0 auto;
}
@media only screen and (max-width:500px) {
.nav-flex {
flex-direction: row;
}
}
Причина, по которой я поставил .container, заключалась в том, что# Фон основного заголовка должен занимать весь экран, в то время как все содержимое контейнера должно быть 960 пикселей.
Проблема: То, что происходит, заключается в том, что верхнее навигационное меню будет лежать только горизонтально, а логотип div и меню занимают интервал 2fr и 1fr, как показано в моей сетке CSSсоответственно - вместо # main-header родительского div, охватывающего все, что позволяет мне размещать flex div так, как я хочу.
Когда я удаляю код сетки CSS в .container, он отлично работает.
Я относительно новичок в сетках CSS и Flexbox, но, насколько я понимаю, CSS-сетки - это способ задать макет 2-мерным образом, а Flex должен расположить контент определенным образом внутри своего контейнера Flex.
Что я получаю (1. развернутый экран, 2. просмотр мобильного экрана): развернутый просмотр
просмотр мобильного экрана
Чего я пытаюсь достичь (3. развернутый экран, 4. вид мобильного экрана): развернутый вид вид мобильного экрана
Прошу прощения, если этовопрос сформулирован запутанно.Сейчас 2 часа ночи, и я не могу понять это. На всякий случай, я действительно запутался
Большое вам спасибо!