9

ちょっとした背景: Web ページの上部にある全体にまたがるヘッダーに取り組んでいます。現在のユーザー名、ログアウト ボタンなどをヘッダーの右側にフロートさせ、ロゴといくつかのナビゲーション項目を左側に配置したいと考えています。左のアイテムと右のアイテムが衝突するようにブラウザウィンドウが縮小する場合、それらをラップしたくありません。header-container div を overflow: auto に設定しているので、スクロールを開始したいと思います。

質問: div float:left と div float:right の両方に display:inline-block があり、親に white-space:no wrap がある場合でも - ラップ!!! 偶然にも、さらに別の div を display:inline-block で囲むことで機能させることができることがわかりました。どうしてこれなの???

以下は私のコードと動作中のjsfiddleで、動作中のセットアップとラップするセットアップの両方を示しています。追加の div が必要な理由がわかりません。 http://jsfiddle.net/klyngbaek/tNHLL/9/

ウィンドウを縮小するときに、2 番目の青い四角形を新しい行にドロップしたくない

HTML:

<h2>With extra inline-block dive. The blue rectangles do not wrap.</h2>
<div class="wrapper nowrap">
    <div class="second-wrapper">
        <div class="floating float-left">[logo] | home | [navitem1] | [navitem2]</div>
        <div class="floating float-right">[username] | logout</div>
    </div>
</div>
<h2>Without extra inline-block dive. The blue rectangles do wrap.</h2>
<div class="wrapper nowrap">
    <div class="floating float-left">[logo] | home | [navitem1] | [navitem2]</div>
    <div class="floating float-right">[username] | logout</div>
    <div class="clearfix"></div>
</div>

CSS:

.wrapper {
    border:#333;
    margin-bottom:;
}
.second-wrapper {
    border:;
    display:inline-block;
    min-width: 100%;
}
.nowrap {
    white-space: nowrap;
}
.clearfix {
    clear: both;
}
.floating {
    background: lightblue;
    border:;
    height:;
    padding:}
.float-left {
    float: left;
}
.float-right {
    float: right
}

または、私が望むことを達成するためのより良い方法があるかもしれません。

前もって感謝します!

編集:更新されたjsfiddleリンク

4

2 に答える 2

9

左、右、上、および下の余白が追加された例。複数の div; メイン フレームの高さを調整します。左端のフローティング div の左マージンを設定します。右端のフローティング Div の右マージン:

結果:

ここに画像の説明を入力

スタイルと HTML を 1 つのファイルに:

<html>
<body>
<style>

.row {
    float:left;
    border: 3px solid blue;
    width: 96%;
    margin-left: 2%;
    margin-right: 2%;
    height: 115px;
    overflow: auto;
    position: static;
}

.floatLeftDiv {
    display: inline-block;
    border: 3px solid red;
    width: 200px;
    height: 100px;
    margin-top: 3px;
}

.right {
    float: right;
    border: 3px solid red;
    width: 200px;
    height: 100px;
    margin-top: 3px;
    margin-right: 1%;
}

</style>

<div class="row">
    <div class="floatLeftDiv" style="margin-left: 1%;">Inline Item A:</div>
    <div class="floatLeftDiv">Inline Item B:</div>
    <div class="floatLeftDiv">Inline Item C:</div>
    <div class="right">Inline Item D:</div>
</div>


</body>
</html>

このディスカッションと別のディスカッションから変更されたコード。

于 2014-02-02T05:49:28.003 に答える
4

display:inline-block は、セレクターの子に影響を与えます。これは、子要素からインライン ブロックを削除した更新バージョンです。

http://jsfiddle.net/ccsuP/

レイアウトしようとしているページのマークアップを確認する必要があります。ポジショニングを使用する方法があるかどうか疑問に思っています。

ここでこれをチェックして、それが役立つかどうか教えてください: http://jsfiddle.net/taUgM/

* { Box-sizing: Border-box }

.wrapper {
    border: 1px dashed #333;
    margin-bottom: 10px;
    overflow: auto;
width: 100%;
    position:absolute;
 }
.box{
    width:50px;
    height:50px;
    border:1px solid yellow;
    display:block;
    position: relative;
}

.title-etc{
    top:0;
     left:0
    float:left;        
    background:blue;
}
.login-box{
    top:0;
     right:0;
    float:right;
        background:red;
}
于 2013-05-19T19:37:00.423 に答える