5.4.1 声明式用法
在平时使用过程中,滚动侦测一般有两种用法,一种是像上面的那样固定一个元素的高度,进行滚动,然后对相应的菜单进行高亮显示;另外一种是对整个页面(body)进行滚动侦测。两种方式的用法一样,都需要有如下3个步骤:
1)设置滚动容器,即在所要侦测的元素上设置data-target="#selector" data-spy="scroll"属性。
2)设置菜单链接容器,该容器的id(或样式)和data-target属性所对应的选择符应一致。
3)在菜单容器内,必须有.nav样式的元素,并且在其内部有li元素,li内包含的a元素才是可以侦测高亮的菜单链接,即符合.nav li > a这种选择符的条件。
第一种用法示例如下:
- <div id="selector"><!-- 菜单容器 -->
- <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
- <ul class="nav navbar-nav">
- <li class="active"><a href="#fat">@fat</a></li><!-- 第1个链接 -->
- <li class=""><a href="#mdo">@mdo</a></li><!-- 第2个链接 -->
- <li class="dropdown">
- <a data-toggle="dropdown" class="dropdown-toggle" href=
- "#">Dropdown <b class="caret"></b></a>
- <ul class="dropdown-menu">
- <li class=""><a href="#one">one</a></li><!-- 第3个链接 -->
- <li class=""><a href="#two">two</a></li><!-- 第4个链接 -->
- <li class="divider"></li>
- <li class=""><a href="#three">three</a></li><!-- 第5个链接 -->
- </ul>
- </li>
- </ul>
- </nav>
- </div>
- <!—滚动侦测区域 -->
- <div data-offset="0" data-target="#selector" data-spy="scroll" style="
- 确保设置了固定高度,并且overflow: auto">
- <h4 id="fat">@fat</h4><p>具体内容</p>
- <h4 id="mdo">@mdo</h4><p>具体内容</p>
- <h4 id="one">one</h4><p>具体内容</p>
- <h4 id="two">two</h4><p>具体内容</p>
- <h4 id="three">three</h4><p>具体内容</p>
- </div>
第二种用法示例和第一种类似,只不过将滚动侦测容器挪到了body上,而nav一定要在body内部。
- <body data-target="#selector" data-spy="scroll">
- <nav class="navbar navbar-default navbar-fixed-top" role="navigation" id=" selector ">
- ...
- </nav>
- <h4 id="fat">@fat</h4>
- <p>具体内容</p>
- <!-- 省略其他链接 -->
- </body>
从上述两个例子可以看出,除了两个容器以外,滚动侦测容器内必须有上述菜单项链接所对应的id选择符,即如果要高亮显示href="#fat"所在的菜单,就必须有id="fat"的元素,其显示范围超过当前滚动区域才行。