Bootstrap 4 自动更新导航插件 (Scrollspy)
自动更新导航插件 ( Scrollspy )会根据滚动条的位置自动更新对应的导航目标
自动更新导航插件主要由两部分组成
- 滚动区域,以
data-spy="scroll"
来识别,且 CSS 属性 position 要设置为 "relative" 才能起作用 - 导航区域,以
.navbar
来识别
而滚动区域的 data-target
属性,它的值为导航栏的 id 或 class ( .navbar
),用于将滚动区域和导航区域联系起来
如果需要点击导航的链接滚动到指定区域,则需要将滚动项元素上的 id (<div id="section1">) 匹配导航栏上的链接选项 ( <a href="#section1">)
如果要在初始化时就滚动到指定的区域,可以使用 data-offset
属性
它用于计算滚动位置时,距离顶部的偏移像素。 默认为 10 px
下面的范例演示了自动更新导航插件插件的主要代码
<!-- 可滚动区域 --> <div data-spy="scroll" data-target=".navbar" data-offset="50"> <!-- 导航区域,实质上就是一个导航条 --> <!--- <a> 标签可以用点击跳转到指定的章节 --> <nav class="navbar navbar-expand-sm bg-dark navbar-dark fixed-top"> ... <ul class="navbar-nav"> <li><a href="#section1">Section 1</a></li> ... </nav> <!-- 第一部分内容 --> <div id="section1"> <h1>Section 1</h1> <p>Try to scroll this page and look at the navigation bar while scrolling!</p> </div> ... </div>
垂直滚动监听
<body data-spy="scroll" data-target="#myScrollspy" data-offset="1"> <div class="container-fluid"> <div class="row"> <nav class="col-sm-3 col-4" id="myScrollspy"> <ul class="nav nav-pills flex-column"> <li class="nav-item"> <a class="nav-link active" href="#section1">Section 1</a> </li> ... </ul> </nav> <div class="col-sm-9 col-8"> <div id="section1"> <h1>Section 1</h1> <p>Try to scroll this page and look at the navigation list while scrolling!</p> </div> ... </div> </div> </div> </body>