しかし、ヘッダーを正しく取得できないようです(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;
}
更新
上記のコードから次のことがわかります: しかし、2を中央に配置し、3を右側に配置します。要素のコンテンツはさまざまである可能性があるため、幅をパーセントに設定したくありません。つまり、20/60/20-10/80/10-33/33/33または他の何かになる可能性があります。
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: left
は、1と2の両方と 3をflex div とoverflow: hidden
。 1 でも同じことができます。htmlの順序を完全に逆にし、2と3をfloat: right
に1がoverflow: hidden
。私にはミドルフレックスを使用するのが最善のように思えますが、アプリケーションは私よりもよく知っています。
レスポンシブな幅でサイトを作成しようとしている場合、次を試すことができます(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;
}
ヘッダーのdivに幅を与え、header-e3をフロートさせる必要があります。
注:これらはすべて同じCSSプロパティを持っているため、.headerDivsのような同じクラスを指定するだけで、コードを繰り返す必要がなくなります。
編集:ここは動作するjsfiddleです: http://jsfiddle.net/eNDPG/
次のようなことができます:
[〜#〜] 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 Binは次のとおりです。 http://jsbin.com/evagat/2/edit
<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.
width: 33%
の代わりにdisplay: inline-block
を使用することを除いて、RevCocneptがfloat: left
で提案したものと同様のアイデアを使用しています。これは、ページフローから#header
内のdiv
要素を削除し、#header
の高さをゼロにしないようにするためです。
#header > div {
display: inline-block;
width: 31%;
margin: 5px 1%;
}