Webサイトのナビゲーションパネルを作成しようとしています。私はそれを以下で構成したいと思います:
- 同じサイズの4つのタブで、各タブのテキストが中央に配置されます。
- ページ幅全体を埋める必要があります。
柔軟でブラウザに優しいデザインにしたいと思っています。いろいろなフロートテクニックを試しましたが、うまくいきません。あなたが私を助けてくれることを願っています!
ありがとうございました。
Webサイトのナビゲーションパネルを作成しようとしています。私はそれを以下で構成したいと思います:
柔軟でブラウザに優しいデザインにしたいと思っています。いろいろなフロートテクニックを試しましたが、うまくいきません。あなたが私を助けてくれることを願っています!
ありがとうございました。
HTML
編集:それは2015年であり、HTML5はしばらくの間そこにありました。次のコードは、ランドマークのARIA属性を持つnav
要素(html5doctorrole="navigation"
)内にある必要があります(99.9%の確率で、特定のページで一意です)。
ナビゲーションパネルは、順序付けられていないリンクのリストを使用する必要があります。
<ul id="nav">
<li><a href="#">One</a></li>
<li><a href="#"> Second</a></li>
<li><a href="#">Third</a></li>
<li><a href="#">Fourth and last, so large that... worst case</a></li>
</ul>
CSS
EDIT2:2017年です。Flexboxを使用してください (ありまたはなしflex-wrap: wrap
)
inline-block
は便利ですが、欠点が1つあります。2つの要素間の空白を注意深く管理する必要があります。</li>
HTML5で削除されたかどうかにかかわらず、または</li>
次の行の先頭で、</li><li>next item
または他のトリックのようにスタックした場合でも、何かを行う必要があります。そうしないと、2つの要素の間に最大4pxのギャップが作成されます。
合計が4の倍数でない場合、25%+ 25%+ 25%+ 25%はすべてのブラウザーで100%に等しくなりません。各ブラウザーには独自の丸め方法があります。
要素の幅を合計100%にし、幅を等しくしたい場合、別の方法は、display: table
ブラウザに他のtable-cell
テーブルアルゴリズムを使用するように強制することです。これは、セルの幅をコンテンツに適合させようとはしませんが、必要な幅を尊重します。可能な限り設計者/開発者によって。table-layout: fixed
ul {
margin: 0;
padding: 0;
}
li {
list-style-type: none;
}
#nav {
display: table;
table-layout: fixed;
text-align: center;
}
#nav li {
display: table-cell;
width: 25%;
padding-right: 1px;
height: auto;
vertical-align: bottom;
}
#nav a {
display: block;
min-height: 100%;
padding: 4px 10px;
background-color: #222;
color: white;
border-radius: 6px 6px 0 0;
}
フィドル
http://jsfiddle.net/PhilippeVay/aHCy3/1/
編集: http: //jsfiddle.net/PhilippeVay/aHCy3/2/同僚の好意により、各タブ間のスペースに別の方法を使用。
これにはフロートは必要ありません。幅を25%、または25%未満に設定するだけです。これをブロックレベルの要素で使用している場合は、を設定しdisplay: inline-block
ます。これは、すべてのブラウザサイズで機能し、ウィンドウのサイズ変更にも対応します。
HTML
<div class="nav">Nav 1</div>
<div class="nav">Nav 2</div>
<div class="nav">Nav 3</div>
<div class="nav">Nav 4</div>
CSS
body, html {
width: 100%;
padding: 0;
margin: 0;
}
.nav {
width: 24%; /*Slightly less than 1/4th of the width*/
display: inline-block;
padding: 0;
margin: 0;
text-align: center;
}
css:
.tab {
float: left;
width:25%;
height:25px;
background:black;
border:1px solid #fff;
box-sizing: border-box;
}
html:
<div class="tab"></div>
<div class="tab"></div>
<div class="tab"></div>
<div class="tab"></div>
jsfiddle: http: //jsfiddle.net/zP7Xh/6/