torinaブログ

DjangoとBootstrap4で作成したブログ
Python, Django, Kivy, Bootstrap, Apache等のメモです
ソースコード

Bootstrap、Fixed Navbar

HTMLとCSSとJavaScript Bootstrap3
2016年2月28日2:02
このようなナビバーを作ります。これはスマホサイズの表示です


PCではこんな感じです

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <title>Bootstrap 101 Template</title>

    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <style>
      body {
          padding-top: 70px;
      }
  </style>
  <body>
    <nav class="navbar navbar-default navbar-fixed-top">
      <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="navbar-collapse 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>
    </nav>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>



      body {
          padding-top: 70px;
      }

これをつけないと、スマホサイズの場合にページ上段が埋もれるので気をつけましょう


<span class="icon-bar"></span>が3つありますが、スマホサイズでの右上ボタンになっています
もしメニューを右側に寄せたい、なんてときは
          <ul class="nav navbar-nav navbar-right">
            <li class="active"><a href="#">Home</a></li>
            <li><a href="#about">About</a></li>
            <li><a href="#contact">Contact</a></li>
          </ul>

と、navbar-rightをつけましょう

ドロップダウンが欲しい、なんてときは
          <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>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li role="separator" class="divider"></li>
                <li class="dropdown-header">Nav header</li>
                <li><a href="#">Separated link</a></li>
                <li><a href="#">One more separated link</a></li>
              </ul>
            </li>
          </ul>

このように変更します

このブログもそうですが、navbarの中にフォームが欲しいときはこのように
        <form action="/quick/" class="navbar-form navbar-right" role="search">
          <div class="form-group">
            <input type="text" id="quick-text" name="quick-text" class="form-control" placeholder="クイックサーチ!">
          </div>
          <button type="submit" class="btn btn-default">Quick Search</button>
        </form>



<li class="active">とすると、選択された状態になりますので、現在のページをあらわすのに使えます

Djangoでは、よくbase.htmlに以下のようにして使っています
          <ul class="nav navbar-nav">
            <li class="{% block home %}{% endblock %}"><a href="{% url 'app:home' %}">Home</a></li>
            <li class="{% block about %}{% endblock %}"><a href="{% url 'app:about' %}">About</a></li>
            <li class="{% block map %}{% endblock %}"><a href="{% url 'app:map' %}">Map</a></li>
          </ul>


例えばhome.htmlなら
{% block home%}active{% endblock %}

とすると、class="active"となります
他に良い方法があれば追記します