21

私は次の構造でサイトを作成しようとしています:
望ましい構造

しかし、ヘッダーを正しく取得できないようです(e1左、e2中央、e3右)。3つの要素e1、e2、e3を左、中央、右に配置します。これは私が試していることです:

<div id="wrapper">
<div id="header">
    <div id="header-e1">
        1
    </div>
    <div id="header-e2">
        2
    </div>
    <div id="header-e3">
        3
    </div>
</div>
<div id="nav">
    links
</div>
<div id="content">
    content
</div>
<div id="footer">
    footer
</div>
</div>

このcssで:

#wrapper
{
    width: 95%;
    margin: 20px auto;
    border: 1px solid black;
}

#header
{
    margin: 5px;
}
#header-e1
{
    float: left;
    border: 1px solid black;
}
#header-e2
{
    float: left;
    border: 1px solid black;
}
#header-e3
{

    border: 1px solid black;
}

#nav
{
    margin: 5px;
}
#content
{
    margin: 5px;
}
#footer
{
    margin: 5px;
}

誰かが私にできることのヒントを教えてもらえますか?この構造は、モバイルWebサイトで使用される予定です。

アップデート

私が上に持っているコードは私にこれを与えます: 現在の結果 しかし、私は2を中央に置き、3を右側に置きたいです。要素の内容が異なる可能性があるため、幅をパーセントに設定したくありません。つまり、20/60/20-10/80/10-33/33/33などの可能性があります。

4

6 に答える 6

22

オーバーフローの魔法を利用する:隠し

次のように2と3のhtml位置を入れ替えることができる場合:

<div id="header-e1">
    1 is wider
</div>
<div id="header-e3">
    3 is also
</div>
<div id="header-e2">
    2 conforms
</div>

次に、このcssを設定できます。これにより、2が使用可能なスペースを「埋める」ようoverlow: hiddenになります。したがって、1と3が拡大すると、2が縮小します(ウィンドウを縮小して、実際に小さいサイズで何が起こるかを確認します)。

#header-e1 {float: left;}
#header-e2 {overflow: hidden;}
#header-e3 {float: right;}

技術的には、現在のhtmlの順序とfloat: left1と2の両方を維持し、 3をでフレックスdivにすることができますoverflow: hidden。htmlの順序を完全に逆にして、2と3を1に設定することで、1でも同じことができます。私にはミドルフレックスが最適に思えますが、あなたは私よりもあなたのアプリケーションをよく知っています。float: rightoverflow: hidden

于 2012-07-19T23:46:37.010 に答える
5

レスポンシブ幅のサイトを作成しようとしている場合は、次のことを試すことができます(33%は約3分の1です)。

#header-e1 {
    float: left;
    width:33%;
    border: 1px solid black;
}

#header-e2 {
    float: left;
    width:33%;
    border: 1px solid black;
}

#header-e3 {
    float: left;
    width:33%;
    border: 1px solid black;
}

divに固定幅を使用することもできます。お互いに距離を置きたい場合は、左右の余白などで遊ぶことができます。お役に立てば幸いです。

幅なしの編集は次のとおりです。

#wrapper {
    position:relative; (add to wrapper)
}

#header-e1 {
    position:absolute;
    left:0;
    border:1px solid black;
}

#header-e2 {
    position:absolute;
    left:50%;
    border:1px solid black;
}

#header-e3 {
    position:absolute;
    right:0;
    border: 1px solid black;
}
于 2012-07-19T22:24:49.643 に答える
1

ヘッダーのdivに幅を指定し、floatheader-e3を左に配置する必要があります。

注:これらはすべて同じCSSプロパティを持っているため、.headerDivsのような同じクラスを指定するだけで、コードを繰り返す必要がなくなります。

編集:ここに動作するjsfiddleがあります:http://jsfiddle.net/eNDPG/

于 2012-07-19T22:24:32.827 に答える
0

の代わりにwidth: 33%を使用することを除いて、RevCocneptがで提案したものと同様のアイデアを使用しています。これは、ページのフローから内部の要素を削除して、の高さがゼロになるのを防ぐためです。display: inline-blockfloat: leftdiv#header#header

#header > div {
    display: inline-block;
    width: 31%;
    margin: 5px 1%;
}

デモ

于 2012-07-19T22:40:26.613 に答える
0

あなたはこのようなことをすることができます:

HTML

<div>
    <div id="left">Left</div>
    <div id="right">Right</div>
    <div id="center">Center</div>
</div>

CSS

#left {
  float: left;
  border: 1px solid red;
}

#right {
  float: right;
  border: 1px solid blue;
}

#center {
  margin-left: 50px;
  margin-right: 50px;
  border: 1px solid green;
  text-align: center;
}

中央揃え<div>は、コードの最後に来る必要がありHTMLます。

テストするJSビンは次のとおりです:http://jsbin.com/evagat/2/edit

于 2013-05-01T23:46:34.577 に答える
0
                        <style type="text/css">
                        body {
                        margin:0;
                        }
                        #header {
                        width:100%;
                        **strong text**margin:auto;
                        height:10%;
                        background-color:red;
                        }
                        #left {
                        width:20%;
                        float:left;
                        #margin:auto auto auto auto;
                        height:100%;
                        background-color:blue;
                        }
                        #right {
                        float:right;
                        width:20%;
                        #margin:auto auto auto auto;
                        height:100%;
                        background-color:green;
                        }
                        #middle {
                        position:relative;
                        left:0;
                        right:0;
                        margin:auto;
                        height:80%;
                        background-color:yellow;
                        width:100%;
                        }
                        #middle1 {
                        width: 80%;
                        margin:auto;
                        height:45%;
                        background-color:black;
                        }
                        #middle2 {
                        width: 80%;
                        margin:auto;
                        height:40%;
                        background-color:brown;
                        }
                        #middle3 {
                        width: 80%;
                        margin:auto;
                        height:15%;
                        background-color:orange;
                        }
                        #midmain {
                        width: auto;
                        margin:auto;
                        height:100%;
                        background-color:white;
                        }
                        #footer {
                        width:100%;
                        margin:auto;
                        height:10%;
                        background-color:red;
                        }
                        </style>

now check comment for html design.
于 2018-06-26T05:04:34.940 に答える