Twitter Bootstrap 3.1.1で指定された高さで完全なレスポンシブnavbarを実行したいのですが、ブランドは画像(ロゴ)またはテキストで構成できます。
html:
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse"
data-target="#bs-example-navbar-collapse-1">
<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="#">
<img src="http://placehold.it/150x50&text=Logo" alt="">
</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
</div>
</nav>
css:
body {
margin-top: 125px;
}
.navbar-fixed-top .nav {
padding: 15px 0;
}
問題は、ブラウザのウィンドウサイズが小さくなり、メニューが折りたたまれると、navbarが元の高さに戻り、ロゴ画像が次のようになることです。
もう1つの問題は、<img src="http://placehold.it/150x50&text=Logo" alt="">
を<h3>AppName</h3>
に変更すると、AppNameが途中にないことです。
現在、それはパディング値を設定することによって中央に置かれていますが、それを独立させる方法がわかりません。
誰も私がこの問題を解決するのを助けることができますか?
よろしく
編集:
ここに私が達成したい効果の準備された画像があります:
ロゴ画像で折りたたまれていないナビゲーションバー:
折りたたまれたnavbar(同じ高さのnavbar、同じサイズの画像、異なる幅od navbar):
ブランド名のテキストで折りたたまれていないnavbar:
折りたたまれたnavbar(ブラウザのウィンドウ幅の変更によって引き起こされるnavbarの幅を除くすべてが同じです):
this (ウィンドウのサイズを変更してモバイルバージョンを表示する方法を確認できます)を実現するには、2つのロゴイメージ(デスクトップ用とモバイル用)を用意するだけです。 visible-xs
およびhidden-xs
クラスを使用して、環境に応じてそれらを表示します。
だから私はこのようなものを使用しました:
<img class="hidden-xs" src="http://placehold.it/150x50&text=Logo" alt="">
<img class="visible-xs" src="http://placehold.it/120x40&text=Logo" alt="">
そしてもちろん、私は以下を使用してモバイルロゴをスタイルしました:
@media (max-width: 767px) {
.navbar-brand {
padding: 0;
}
.navbar-brand img {
margin-top: 5px;
margin-left: 5px;
}
}
すべてのコードを見ることができます こちら 。ロゴが組み込まれたモバイル版のテキストが必要な場合、大したことではありません。ロゴを<h1 class="visible-xs">AppName</h3>
に置き換え、メディアクエリ内のスタイルを次のように変更します。
@media (max-width: 767px) {
.navbar-brand {
padding: 0;
}
.navbar-brand h1{
//here add your style depending of the position you want the text to be placed
}
}
編集:
動作させるには次の条件が必要です。
.navbar-toggle {
margin: 23px 0;
}
.navbar-nav, .navbar-nav li, .navbar-nav li a {
height: 80px;
line-height: 80px;
}
.navbar-nav li a {
padding-top: 0;
padding-bottom:0;
}
navbar-inner
クラスとコンテナー内にブランドロゴを追加する最適な方法。 <h3>
の問題<h3>
については、@ creimersが言ったように、bootstrapで特定のパディングが指定されています。また、より大きな画像を使用している場合は、ナビゲーションバーの高さも大きくすると、ロゴが外側に浮き上がります。
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="navbar-inner"> <!--changes made here-->
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse"
data-target="#bs-example-navbar-collapse-1">
<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="#">
<img src="http://placehold.it/150x50&text=Logo" alt="">
</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
</div>
</div>
</nav>
含めるプレースホルダー画像の高さは50px
です。 padding-top
の15px
と50px
の高さを持つanchor (.navbar-brand)
でラップされます。そのため、プレースホルダーのロゴはバーから流れ出します。小さい画像を含めるか、class
で参照できるid
またはcss
を割り当てて、アンカーのパディングを試してください。
EDITまたはheight: 50px
から静的.navbar-brand
を削除します。これで、ナビゲーションバーは最も高い子の高さになります。
h3
のbootstrapには、デフォルトでpadding-top
of 20px
があります。繰り返しますが、padding-top: 15px
アンカーでラップされます。それが、あなたが望むように、それが垂直方向に中央にない理由です。 h3
にclass
を、またはid
にマージントップをリセットすることもできます。 padding
のanchor
でも同じことができます。
遊び方は次のとおりです。 http://jsbin.com/jelec/1/edit?html,output
私はチェックし、それは私のために働いた。
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1" style="margin-top:100px;"><!--style with margin-top according to your need-->
<ul class="nav navbar-nav navbar-right">
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
そのロゴを追加する場所の高さと幅を設定するだけです。私は試してみました