Строка направления движения не работает: она все еще отображается в виде столбца
У меня есть навигационная панель, которую я хочу отображать в виде столбца на маленьких экранах и в виде строки на экранах рабочего стола. Моя проблема в том, что я не знаю, почему "flex-direction: row;" не меняет панель навигации, чтобы соответствовать бок о бок.
HTML:
<div class="top-nav">
<nav>
<ul>
<li><a>Home</a></li>
<li><a>Category</a></li>
<li><a>Recent</a></li>
<li><a>All recipes</a></li>
</ul>
</nav>
</div>
CSS:
.top-nav li {
list-style-type: none;
font-size: 22px;
border: 2px solid #333;
width: 80%;
padding: 0;
margin-top: 10px;
margin-left: auto;
margin-right: auto;
box-shadow: 2px 2px 2px #333;
}
.top-nav {
display: flex;
flex-direction: column;
text-align: center;
justify-content: center;
}
.top-nav ul {
padding: 0;
margin: 0;
}
@media (min-width: 750px) {
/* top nav */
.top-nav {
flex-direction: row;
}
.top-nav li {
margin: 0;
width: auto;
}
6 ответов
Проблема в вашей области селектора. Ваш flex
не работает вообще, чтобы управлять вашим расположением элементов навигации. Вы применяете CSS контейнер навигации, а не контейнер пункта меню. Даже если он отображается в виде столбца, это также не заслуга flex
недвижимость здесь. Смотрите ниже, это может помочь вам:
Ключевая часть:
.top-nav ul {
display: flex;
flex-direction: row;
}
.top-nav li {
list-style-type: none;
font-size: 22px;
border: 2px solid #333;
width: 80%;
padding: 0;
margin-top: 10px;
margin-left: auto;
margin-right: auto;
box-shadow: 2px 2px 2px #333;
}
.top-nav {
display: flex;
flex-direction: column;
text-align: center;
justify-content: center;
}
.top-nav ul {
padding: 0;
margin: 0;
}
@media (min-width: 750px) {
/* top nav */
.top-nav {
flex-direction: row;
}
.top-nav ul {
display: flex;
flex-direction: row;
}
.top-nav li {
margin: 0;
width: auto;
}
<div class="top-nav">
<nav>
<ul>
<li><a>Home</a></li>
<li><a>Category</a></li>
<li><a>Recent</a></li>
<li><a>All recipes</a></li>
</ul>
</nav>
</div>
Следующие изменения в вашем CSS для решения
.top-nav li {
list-style-type: none;
font-size: 22px;
border: 2px solid #333;
width: 80%;
padding: 0;
margin-top: 10px;
margin-left: auto;
margin-right: auto;
box-shadow: 2px 2px 2px #333;
}
.top-nav {
text-align: center;
justify-content: center;
}
.top-nav ul
{
padding: 0;
margin: 0;
display: flex;
}
@media screen and (max-width: 480px)
{
.top-nav ul
{
flex-direction:column;
}
.top-nav li
{
margin: 0;
width: auto;
}
}
<div class="top-nav">
<nav>
<ul>
<li><a>Home</a></li>
<li><a>Category</a></li>
<li><a>Recent</a></li>
<li><a>All recipes</a></li>
</ul>
</nav>
</div>
Попробуйте этот код Надеюсь, это будет работать для вас!
.top-nav li {
list-style-type: none;
font-size: 22px;
border: 2px solid #333;
width: 80%;
padding: 0;
margin-top: 10px;
margin-left: auto;
margin-right: auto;
box-shadow: 2px 2px 2px #333;
}
.top-nav ul{
display: flex;
flex-direction: row;
text-align: center;
align-items: center;
justify-content: center;
}
.top-nav {
padding: 0;
margin: 0;
}
@media only screen and (max-width: 750px) {
/* top nav */
.top-nav ul { flex-direction: column; }
}
/* .top-nav li {
margin: 0;
width: auto;
}
} */
<div class="top-nav">
<nav>
<ul>
<li><a>Home</a></li>
<li><a>Category</a></li>
<li><a>Recent</a></li>
<li><a>All recipes</a></li>
</ul>
</nav>
</div>
Вы должны сделать свой <li>
дети display: flex
Родитель. Переместить ваш top-nav
класс к <ul>
и это должно сделать это.
<div>
<nav>
<ul class="top-nav">
<li><a>Home</a></li>
<li><a>Category</a></li>
<li><a>Recent</a></li>
<li><a>All recipes</a></li>
</ul>
</nav>
</div>
Вот мой любимый чит-лист flexbox: https://yoksel.github.io/flex-cheatsheet/
Теперь flex-direction:column; работа в максимальной ширине 750px и flex-direction: работа строки после 750px;
посмотрите пример js fiddle здесь
.top-nav li {
list-style-type: none;
font-size: 22px;
border: 2px solid #333;
width: 80%;
padding: 0;
margin-top: 10px;
margin-left: auto;
margin-right: auto;
box-shadow: 2px 2px 2px #333;
}
.top-nav {
}
.top-nav ul {
display: flex;
flex-direction: row;
text-align: center;
justify-content: center;
padding: 0;
margin: 0;
}
@media (max-width: 750px) {
/* top nav */
.top-nav ul{
flex-direction: column;
}
.top-nav li {
margin: 0;
width: auto;
}
}
<div class="top-nav">
<nav>
<ul>
<li><a>Home</a></li>
<li><a>Category</a></li>
<li><a>Recent</a></li>
<li><a>All recipes</a></li>
</ul>
</nav>
</div>