ブートストラップ3のaffixとScrollSpyを使ったサンプルレイアウト

ブートストラップ3のサンプルoffcanvasを流用してaffixとScrollSpyを使ったサンプルレイアウトを作成しました。これによって、ページ内をスクロールするとその位置に応じてサイドバーのリンクがアクティブになります。
 
以下、Bootstrap v3.3.7を使って確認しています。

※デモはこちらをクリック。
 

1)修正したポイント


 
・bodyタグにサイドバーをターゲットとしてScrollSpyを設定
<body data-spy=”scroll” data-target=”#sidebar”>
 
・サイドバーにaffixの設定
<div id=”sidebar” data-spy=”affix” data-offset-top=”160″ data-offset-bottom=”100″>
 
・サイドバーのリストグループを下記のように変更
<ul class=”nav nav-pills nav-stacked”>
 
・affixに関する下記スタイルシート設定をoffcanvas.css内に追加

.affix{
  position:fixed;
  top:150px;
}

 

2)サンプルコード


 

<!DOCTYPE html>
<html>
  <head>
////
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link href="css/offcanvas.css" rel="stylesheet">
  </head>
  <body data-spy="scroll" data-target="#sidebar">
    <nav class="navbar navbar-fixed-top navbar-inverse">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Project name</a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Home</a></li>
            <li><a href="#about">About</a></li>
            <li><a href="#contact">Contact</a></li>
          </ul>
        </div><!-- /.nav-collapse -->
      </div><!-- /.container -->
    </nav><!-- /.navbar -->

    <div class="container">
      <div class="jumbotron">
/////
      </div>
      <div class="row row-offcanvas row-offcanvas-right">
        <div class="col-xs-12 col-sm-9">
          <p class="pull-right visible-xs">
            <button type="button" class="btn btn-primary btn-xs" data-toggle="offcanvas">Toggle nav</button>
          </p>
          <div class="row">
            <div class="col-xs-6 col-lg-4">
              <h2 id="one">Heading1</h2>
/////
            </div><!--/span-->
            <div class="col-xs-6 col-lg-4">
              <h2 id="two">Heading2</h2>
/////
            </div><!--/span-->
            <div class="col-xs-6 col-lg-4">
              <h2 id="three">Heading3</h2>
/////
            </div><!--/span-->
            <div class="col-xs-6 col-lg-4">
              <h2 id="four">Heading4</h2>
/////
            </div><!--/span-->
            <div class="col-xs-6 col-lg-4">
              <h2 id="five">Heading5</h2>
/////
            </div><!--/span-->
            <div class="col-xs-6 col-lg-4">
              <h2 id="six">Heading6</h2>
/////
            </div><!--/span-->
          </div><!--/row-->
        </div><!--/span-->

        <div class="col-xs-6 col-sm-3 sidebar-offcanvas" role="navigation">
          <div id="sidebar" data-spy="affix" data-offset-top="160" data-offset-bottom="100">
            <ul class="nav nav-pills nav-stacked">
              <li><a href="#one">Heading1</a></li>
              <li><a href="#two">Heading2</a></li>
              <li><a href="#three">Heading3</a></li>
              <li><a href="#four">Heading4</a></li>
              <li><a href="#five">Heading5</a></li>
              <li><a href="#six">Heading6</a></li>
            </ul>
          </div>
        </div><!--/span-->
      </div><!--/row-->
/////
    </div><!--/.container-->
    <script src="http://code.jquery.com/jquery.js"></script>
    <script src="js/bootstrap.min.js"></script>
    <script src="js/offcanvas.js"></script>
  </body>
</html>
関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です