css - Flexbox Sticky Footer 破坏了我在移动设备上的导航栏
问题描述
当我将以下代码添加到我的 CSS 时,它只会破坏我在移动设备上的导航栏:
body {
display: flex;
flex-direction: column;
}
#page-content {
flex: 1 0 auto;
}
#footer-container {
flex-shrink: 0;
}
在桌面上,我的导航栏在展开时可以完美运行。它按应有的方式将所有页面内容向下推。
在移动设备上,它仍在扩展,但不会将页面内容向下推。它甚至不保留其背景颜色。它只是在没有背景的情况下向下扩展导航链接。
我正在使用引导程序 4.4.1。这是一个非常通用的导航栏。我删除了下面的导航栏代码。
一旦我从我的 CSS 中删除了上面的 4 行,我的导航就可以在移动设备上完美运行。我只是没有粘性页脚了。
<nav class="mb-0 navbar navbar-expand-lg">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent-555" aria-controls="navbarSupportedContent-555" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent-555">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="/">Home</a>
</li>
</ul>
@Html.Partial("_LoginPartial")
</div>
</nav>
解决方案
尽管我希望有一个真正的解决方案,但我找到了一种让它工作的hacky方法。
基本上,我只是将所有 flexbox 的东西都扔到了媒体查询中,如下所示:
@media (min-width: 992px) {
body {
display: flex;
flex-direction: column;
}
#page-content {
flex: 1 0 auto;
}
#footer-container {
flex-shrink: 0;
}
}
因此,它在导航栏未折叠时使用 flexbox,然后当它折叠时,停止使用 flexbox 的东西。这对我来说非常有效,因为我所有的页面都有足够的内容,我的页脚总是在移动设备的底部。
同样,我认为这是一个 hacky 解决方案,但它有效。
推荐阅读
- javascript - 根据首字母匹配搜索或过滤数据
- ruby-on-rails - 自定义密码摘要问题
- vue.js - 异步加载子组件不会触发 v-if
- reactjs - ReactJS 获取完整的 CSV
- c# - Web 方法 asp.net 中 Base-64 字符数组或字符串的长度无效
- google-cloud-platform - terraform google_bigquery_job 和表架构
- concurrency - 如何控制 Airflow 中 subdag 或 taskgroup 的并发性?
- reactjs - 反应组合没有选择正确的值
- css - 获取 sass 变量值而不是变量名
- powershell - 坚持在哪里添加 export-csv 功能