ブランドロゴが常に中央に残るように、Bootstrap 3 navbarを実装しようとしています。これはコードです:
<div class="navbar navbar-fixed-top navbar-default">
<div class="navbar-inner">
<div class="container">
<button type="button" style="float: left;" class="pull-left btn btn-navbar navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="brand" style="margin: 0; float: none;" href="#">
<img src="/Content/themes/next/images/logo.png" /></a>
<div class="nav-collapse">
<ul class="nav">
<li> <a href="#">Item 1</a></li>
<li> <a href="#">Item 1</a></li>
<li> <a href="#">Item 1</a></li>
</ul>
</div>
<ul class="nav pull-right">
<li>
<a href="#">
<div class="nextCog"></div>
</a>
</li>
</ul>
<span class="navbar-text pull-right">superpup1 </span>
</div>
</div>
</div>
素敵なnavbarになります:
ただし、ロゴ(緑色)が中央に永続的に残るようにしてください。 「ブランド」クラスのタグにこのスタイルを追加しています:
<a class="brand" style="margin: 0; float: none; text-align:center" href="#">
<img src="/Content/themes/next/images/logo.png" /></a>
問題を部分的に解決します。ロゴは中央にありますが、残りのnavbar要素を押し下げます。
これは望ましくない効果であり、排除したいと思います。解決策を提案できますか?たぶん、最初からロゴを中央に配置するのは間違ったアプローチでしょうか?
これを試して:
.navbar {
position: relative;
}
.brand {
position: absolute;
left: 50%;
margin-left: -50px !important; /* 50% of your logo width */
display: block;
}
ロゴを50%からロゴ幅の半分を引いて中央に揃えることで、ズームインおよびズームアウト時に問題が発生しないようにします。
fiddle を参照してください
最も簡単な方法はcss transformです:
.navbar-brand {
transform: translateX(-50%);
left: 50%;
position: absolute;
}
デモ: http://codepen.io/candid/pen/dGPZvR
この方法は、ロゴの動的なサイズの背景画像でも機能し、text-hideクラスを利用できます。
CSS:
.navbar-brand {
background: url(http://disputebills.com/site/uploads/2015/10/dispute.png) center / contain no-repeat;
transform: translateX(-50%);
left: 50%;
position: absolute;
width: 200px; /* no height needed ... image will resize automagically */
}
HTML:
<a class="navbar-brand text-hide" href="http://disputebills.com">Brand Text
</a>
ただし、flexboxを使用することもできます。ただし、このメソッドを使用する場合は、navbar-brand
をnavbar-header
の外に移動する必要があります。画像とテキストを並べて表示できるようになったので、この方法は素晴らしいです。
.brand-centered {
display: flex;
justify-content: center;
position: absolute;
width: 100%;
left: 0;
top: 0;
}
.navbar-brand {
display: flex;
align-items: center;
}
デモ: http://codepen.io/candid/pen/yeLZax
これらの結果をモバイルでのみ達成するには、上記のcssをメディアクエリ内にラップするだけです。
@media (max-width: 768px) {
}
2018年に更新
この例が役立つかどうかを確認してください: http://bootply.com/mQh8DyRfWY
ブランドは中心を使用して..
.navbar-brand
{
position: absolute;
width: 100%;
left: 0;
top: 0;
text-align: center;
margin: auto;
}
マークアップは3ではなくBootstrap 2用です。navbar-inner
はもうありません。
編集-別のアプローチはtransform: translateX(-50%);
を使用しています
.navbar-brand {
transform: translateX(-50%);
left: 50%;
position: absolute;
}
http://www.bootply.com/V7vKDfk46G
Bootstrap 4では、mx-auto
またはflexboxを使用して、ブランドやその他の要素を中央に配置できます。説明については、 Bootstrap 4でnavbarの内容を配置する方法 を参照してください。
以下も参照してください。
古い質問ですが、後世のためだけです。
最も簡単な方法は、画像をnavbarブランドの背景画像として使用することです。必ずカスタム幅を入れてください。
.navbar-brand
{
margin-left: auto;
margin-right: auto;
width: 150px;
background-image: url('logo.png');
}
ロゴが本当に中央に配置され、リンクが正当化されるソリューション。
Navのリンクの最大推奨数は、各リンクの単語の長さに応じて6です。
5つのリンクがある場合、空のリンクを挿入し、次のようにスタイルを設定します。
class="hidden-xs" style="visibility: hidden;"
この方法では、リンクの数は常に偶数です。
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"/>
<style>
.navbar-nav > li {
float: none;
vertical-align: bottom;
}
#site-logo {
position: relative;
vertical-align: bottom;
bottom: -35px;
}
#site-logo a {
margin-top: -53px;
}
</style>
<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">Nav</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav nav-justified navbar-nav center-block">
<li class="active"><a href="#">First Link</a></li>
<li><a href="#">Second Link</a></li>
<li><a href="#">Third Link</a></li>
<li id="site-logo" class="hidden-xs"><a href="#"><img id="logo-navbar-middle" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/32877/logo-thing.png" width="200" alt="Logo Thing main logo"></a></li>
<li><a href="#">Fourth Link</a></li>
<li><a href="#">Fifth Link</a></li>
<li class="hidden-xs" style="visibility: hidden;"><a href="#">Sixth Link</a></li>
</ul>
</div>
</div>
</nav>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
結果を表示するには、スニペットを実行をクリックしてから、フルページをクリックします