【bootstrap3】ナビゲーションバー(Navbar)で起きたレイアウト崩れと右寄せへの対応方法
こんばんは。opiyoです。
結論としては勝手な解釈をして余計なことしてた!に尽きるのだけど、同じようなハマり方すると時間もったい無いので共有です。
<header> <nav class="navbar navbar-inverse"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbarEexample1"> <span class="sr-only">Toggle navigation</span> <% if logged_in? %> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> <% else %> <span class="icon-bar"></span> <span class="icon-bar"></span> <% end %> </button> <a class="navbar-brand" href="#"> <%= link_to "RChannel", root_path, id: 'logo' %> </a> </div> <div class="collapse navbar-collapse" id="navbarEexample1"> <ul class="nav navbar-nav navbar-right"> <% if logged_in? %> <li class="inline-block"><%= link_to "キーワード登録", new_user_keyword_path(user_id: @current_user.id) %></li> <p class="navbar-text inline-block"><%= @current_user.name %> さん</p> <li class="inline-block"><%= link_to "マイリスト", my_list_topic_path(id: @current_user.id) %></li> <li class="inline-block"><%= link_to "ログアウト", logout_path, method: :delete %></li> <% else %> <li class="inline-block"><%= link_to "アカウント登録", new_user_path %></li> <li class="inline-block"><%= link_to "ログイン", login_path %></li> <% end %> </ul> </div> </div> </nav> </header>
ポイントはサンプル通りそのまま記載してください!
で僕が何をしていたのかご覧ください。
画面小さくした時に文字が隠れない
header側にもリンクが必要だと思ったんだよ。
<div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbarEexample4"> <span class="sr-only">Toggle navigation</span> <% if logged_in? %> <span class="icon-bar"><%= link_to "キーワード登録", new_user_keyword_path(user_id: @current_user.id) %></span> <span class="icon-bar"><%= link_to "マイリスト", my_list_topic_path(id: @current_user.id) %></span> <span class="icon-bar"><%= link_to "ログアウト", logout_path, method: :delete %></span> <% else %> <span class="icon-bar"><%= link_to "アカウント登録", new_user_path %></span> <span class="icon-bar"><%= link_to "ログイン", login_path %></span> <% end %> </button> <a class="navbar-brand" href="#"> <%= link_to "RChannel", root_path, id: 'logo' %> </a> </div>
最初こんな感じで.navbar-header
のspan
タグにもリンクが必要だと思って記載していたのですが、これやるとレイアウトが崩れます!
なので、span
タグには何も書いてはいけません!
左寄せが出来ない
<div class="collapse navbar-collapse" id="navbarEexample1"> <ul class="nav navbar-nav"> <% if logged_in? %> <li class="inline-block navbar-right"><%= link_to "キーワード登録", new_user_keyword_path(user_id: @current_user.id) %></li> <p class="navbar-text inline-block navbar-right"><%= @current_user.name %> さん</p> <li class="inline-block"><%= link_to "マイリスト", my_list_topic_path(id: @current_user.id) %></li> <li class="inline-block"><%= link_to "ログアウト", logout_path, method: :delete %></li> <% else %> <li class="inline-block navbar-right"><%= link_to "アカウント登録", new_user_path %></li> <li class="inline-block navbar-right"><%= link_to "ログイン", login_path %></li> <% end %> </ul> </div>
サンプル見ると、p
タグにnavbar-right
設定しているから真似してたのだけど全然右寄せにならない。
で、Chromeで確認してみると
分かりづらいけど、既に領域が固定されているからfloat
かけたって無駄。
なので、上の要素div
タグに対して.navbar-right
を設定してやることでうまくいった!
まとめ
勝手な解釈はせずに、基本に忠実にやりましょう!