html - flex-direction:行不工作;它仍然显示为一列
问题描述
我有一个导航栏,我想在小屏幕上显示为一列,在桌面屏幕尺寸上显示为一行。我的问题是我不知道为什么“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 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>
解决方案
您的选择器范围有问题。您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>
推荐阅读
- r - 如何在 Traminer 中结合状态分布图和单独的图例?
- sql-server - 如何修改默认的 Visual Studio 生成 dockerfile 以包含运行 SQLServer Linux?
- c++ - 无法在 Qt5 中使用 OpenGL 打开覆盖平面
- python - Python:同步程序中的 Websockets
- android - 如何使用 Android 中的 osmdroid 库为折线制作动画?
- javascript - 应用 Glyphicon 时 React-Bootstrap 按钮调整大小
- angularjs - 找不到模块“angularfire2/database”
- r - 在 rmarkdown 中调整 flextable 位置
- javascript - JQuery attr() 和 Data() 返回未定义
- python - 如何用一系列字符串替换一系列布尔值?