Bootstrap 4 固定顶部导航和固定侧边栏

Posted

技术标签:

【中文标题】Bootstrap 4 固定顶部导航和固定侧边栏【英文标题】:Bootstrap 4 fixed top nav and fixed sidebar 【发布时间】:2018-09-13 10:36:42 【问题描述】:

这是一个很好的例子,展示了如何创建带有侧边栏的导航栏。任何人都可以修改代码,以便顶部导航是顶部固定的,侧边栏是固定/静态的,只有主页内容滚动?我可以通过将class="fixed-top" 分配给nav 来使导航成为顶部固定的导航,但我不知道如何使侧边栏固定,以便它保持在同一个位置而不是向上滚动主页面内容。将class="sticky-top" 应用到侧边栏似乎不起作用。

<nav class="navbar navbar-expand-md navbar-dark bg-primary fixed-top">
    ..
</nav>
<div class="row">
    <div id="sidebar-container" class="sidebar-expanded d-none d-md-block">
        <ul class="list-group sticky-top">
            <li>Menu item..</li>
            <li>Menu item..</li>
        </ul>
    </div>
    <div class="col">
        <!-- MAIN -->
    </div>
</div>

https://www.codeply.com/go/LFd2SEMECH

【问题讨论】:

【参考方案1】:

sticky-top 正在工作,但它似乎没有工作,原因有两个......

    主内容区内容不足,无法滚动 它位于top:0,所以它隐藏在固定导航栏后面

添加 CSS 以偏移侧边栏的顶部(与固定导航栏的高度相同)。

.sticky-offset 
    top: 56px;


<ul class="list-group sticky-top sticky-offset">..(sidebar)..</div>

然后,在主区域添加足够的内容(或高度),以便需要滚动...

工作演示: https://www.codeply.com/go/7XYosZ7VH5

<nav class="navbar navbar-expand-md navbar-dark bg-primary fixed-top">
    ..
</nav>
<div class="row">
    <div id="sidebar-container" class="sidebar-expanded col-2 d-none d-md-block">
        <ul class="list-group sticky-top sticky-offset">
            <li>Menu item..</li>
            <li>Menu item..</li>
        </ul>
    </div>
    <div class="col">
        <!-- MAIN -->
    </div>
</div>

【讨论】:

非常感谢。效果很好。我在自己的示例中添加了一堆内容,但是我在错误的元素上添加了粘性偏移。我在 sidebar-container 元素上找到了它,并且按照您的建议缺少粘性偏移量。 离题了,但是有没有一个术语可以同时指代顶栏和侧栏?【参考方案2】:

有一个相对较新的 CSS 位置属性,称为 sticky

position: sticky;
top: 4em;

看看它是如何工作的,当你滚动到父元素的末尾时会发生什么。将高度留在auto。参考——https://developer.mozilla.org/en-US/docs/Web/CSS/position

【讨论】:

以上是关于Bootstrap 4 固定顶部导航和固定侧边栏的主要内容,如果未能解决你的问题,请参考以下文章

在bootstrap中 怎么使得导航栏固定在顶部

Bootstrap 3 固定顶部导航栏显示水平滚动

在 Twitter Bootstrap 3 中为大屏幕居中固定顶部导航栏

Bootstrap:导航栏:导航侧菜单:在小屏幕上折叠

如何使用 Bootstrap 4 创建固定的侧边栏布局?

css 如何增加Bootstrap中导航栏的高度? Twitter bootstrap navbar固定顶部重叠网站?