沃梦达 / IT编程 / 前端开发 / 正文

Bootstrap每天必学之附加导航(Affix)插件

关于Bootstrap的附加导航插件(Affix),以下是一个完整攻略。

关于Bootstrap的附加导航插件(Affix),以下是一个完整攻略。

什么是附加导航插件?

附加导航插件是Bootstrap提供的一种页面导航标记方式,其被固定在页面的指定位置上,并随着页面向下或向上滚动时保持不变,让用户能够更加方便快捷地浏览页面内容。

如何使用附加导航插件?

使用附加导航插件需要以下几个步骤:

步骤1:在html文件中定义页面导航标记

在页面中,我们需要定义一个导航标记,其类名为“affix”,以及一个被关联的容器标记。这个容器标记是在滚动到指定位置后,排版的目标位置。在这个案例中,我们将定义一个位于页面右侧的导航栏:

<div class="col-md-3">
  <div class="affix">
    <ul class="nav">
      <li><a href="#section1">Section 1</a></li>
      <li><a href="#section2">Section 2</a></li>
      <li><a href="#section3">Section 3</a></li>
    </ul>
  </div>
</div>
<div class="col-md-9">
  <div id="section1">Section1</div>
  <div id="section2">Section2</div>
  <div id="section3">Section3</div>
</div>

步骤2:在CSS文件中设置附加导航样式

为了让导航标记可以被固定在页面指定的位置上,我们需要使用样式表(CSS)来定义附加导航的样式:

.affix {
    top: 100px; /* 设置导航在距离页面顶端100像素的位置处 */
}

步骤3:使用JavaScript来初始化导航

在JavaScript中,我们将使用Affix插件来将导航标记与容器标记关联,并设置它们的样式。通过以下代码,让导航跟随滚动条移动,到一定位置时停靠在页面上方。使用Affix插件需先导入jquery和bootstrap.js。如下:

<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.js"></script>
<script type="text/javascript">
$(function () {
    $('.affix').affix({
        offset: {
            top: 200
        }
    });
});
</script>

示例

在这里,我将展示一个示例,让您更好地理解如何使用Affix插件进行附加导航。请看以下代码和效果图:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>Bootstrap Affix插件示例</title>
  <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.css" rel="stylesheet">
  <style>
    .navbar{
      margin-bottom: 50px;
    }
    .affix {
      top: 20px;
    }
  </style>
</head>
<body data-spy="scroll" data-target="#myNavbar" data-offset="50">
<nav class="navbar navbar-inverse navbar-fixed-top" id="myNavbar">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>                        
      </button>
      <a class="navbar-brand" href="#">Bootstrap Affix示例</a>
    </div>
    <div class="collapse navbar-collapse" id="navbar-collapse">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#section1">Section 1</a></li>
        <li><a href="#section2">Section 2</a></li>
        <li><a href="#section3">Section 3</a></li>
      </ul>
    </div>
  </div>
</nav>    
<div class="container">
  <div class="row">
    <div class="col-sm-3">
      <div class="affix" id="sidebar">
        <div class="list-group">
          <a class="list-group-item" href="#section1">Section 1</a>
          <a class="list-group-item" href="#section2">Section 2</a>
          <a class="list-group-item" href="#section3">Section 3</a>
        </div>
      </div>
    </div>
    <div class="col-sm-8">
      <h2 id="section1">Section 1</h2>
      <p>这里是正文内容,用以演示Affix插件的使用。</p>
      <h2 id="section2">Section 2</h2>
      <p>这里是正文内容,用以演示Affix插件的使用。</p>
      <h2 id="section3">Section 3</h2>        
      <p>这里是正文内容,用以演示Affix插件的使用。</p>
    </div>
  </div>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.js"></script>
<script type="text/javascript">
$(function () {
  $('#sidebar').affix({
    offset: {
      top: 100,
      bottom: function () {
        return (this.bottom = $('.footer').outerHeight(true))
      }
    }
  })
})
</script>
</body>
</html>

这个示例展示了如何使用附加导航插件来实现导航的固定。我们可以看到,导航在滚动到指定位置后就会被固定在页面上方,并不随页面向下或向上滚动。另外,注意到在这个示例代码中,我们使用了Affix插件的一个选项“offset”,这个选项设置了导航与相应容器之间的距离。

除此之外,Affix插件的还有其他一些选项:

  • offset:设置导航和相应容器之间的距离;
  • target:设置导航需要跟随的滚动目标;
  • bottom:设置导航应该停靠的页面底部距离。

通过合理使用这些选项,可以使得附加导航插件更加灵活和实用。

本文标题为:Bootstrap每天必学之附加导航(Affix)插件