更新:以下の回答のいずれかに従って、HTML と CSS を簡略化しました。ただし、問題はまだ発生しています。
私は次のような作業用のナビゲーションを持っています:
item11item2item3 Centered item4item5item6
アイテム間にパディングを追加したいので、次のようになります。
item1 item2 item3 Centered item4 item5 item6
左の項目は右詰めです。右側の項目は左詰めです。
問題
float: right;
リストを正当化するために使用すると、 が得られitem3 item2 item1
ます。float: left;
コンテナの幅を に設定するとauto
、正しいレイアウトが得られますが、px
パディングを使用する場合のみです。%
パディングを使用するpadding-left: 3%;
と、壊れて次のようになります。item1 item2 Centered item4 item5 item6 item3
ここに私のHTMLがあります:
<div class="container">
<nav>
<ul class="left">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<ul class="center">
<li>Centered</li>
</ul>
<ul class="right">
<li>Item 4</li>
<li>Item 5</li>
<li>Item 6</li>
</ul>
</nav>
</div>
ここに私のCSSがあります:
/* Reset */
html, body, nav, li {
margin: 0; padding: 0; border: 0;
}
li {
list-style-type: none;
list-style-position: outside;
}
/* Styles */
.container {
width: 100%;
height: auto;
}
nav {
width: 80%;
margin: 0 auto;
}
nav > ul.left {
position: absolute;
right: 55%;
}
nav > ul.left > li {
float: left;
padding-right: 5%;
}
.center {
position: absolute;
left: 45%;
width: 10%;
}
.center li {
text-align: center;
}
nav > ul.right {
position: absolute;
left: 55%;
width: 45%;
}
nav > ul.right > li {
float: left;
padding-left: 5%;
}
ノート:
- 左右のナビゲーション項目の幅が同じでなくても、「中央揃え」を完全に中央に配置するために、絶対配置とコンテナーを使用しています。
- 柔軟なレイアウト(レスポンシブ)であるため、%ベースの幅を使用しています
- 上記のコードは問題なく動作しますが、パディングのパーセンテージをベースにして柔軟性を持たせたいと思っています。
したがって、div は幅を正しく継承し、ピクセルを使用する場合はパディングを考慮しているように見えますが、パーセンテージを使用する場合はそうではありません。li-container
これは典型的な動作ですか?解決策は何ですか?
試してみたい場合に備えて、jsFiddleを次に示します。
追加の更新:
主な問題は、「左」項目を右揃えにする必要があるようです。使用するfloat:right
と逆順になり、良くありません。左の項目で使用するfloat:left
と、順序は正しいですが、コンテナーから明示的な幅を削除する必要があります。そうしないと、項目が右揃えになりません。明示的なコンテナー幅を削除すると、発生している問題が発生します。