例 1: 領域の上、左、右、および下の浮動要素
この例では、一連の div (正方形のブロック) を浮動させて、ブロック要素 ( ) を絶対配置できる.element
長方形の空きスペースを残す方法を示します。#blocker
次のHTMLを検討してください。2 つのクラスを使用して、一番上の行の最後の要素 ( .start-skip
) と、開いた長方形のスペースの右下の最後の要素( ) を識別し.end-skip
ます。
<div id="Content">
<div id="blocker"></div>
<div class="element">1</div>
<div class="element">2</div>
<div class="element">3</div>
<div class="element">4</div>
<div class="element">5</div>
<div class="element start-skip">6</div>
<div class="element">7</div>
<div class="element">8</div>
<div class="element">9</div>
<div class="element">10</div>
<div class="element">11</div>
<div class="element">12</div>
<div class="element">13</div>
<div class="element end-skip">14</div>
<div class="element">15</div>
<div class="element">16</div>
<div class="element">17</div>
<div class="element">18</div>
<div class="element">19</div>
<div class="element">20</div>
<div class="element">21</div>
<div class="element">22</div>
<div class="element">23</div>
</div>
次に、次のCSSを適用します。
#Content {
width:600px;
height:900px;
margin-left:auto;
margin-right:auto;
border: 1px dotted gray;
overflow: auto;
position: relative;
}
#blocker {
background-color: yellow;
position: absolute;
top: 100px;
left: 100px;
width: 400px;
height: 400px;
}
.element {
width: 98px;
height: 98px;
float: left;
margin:0;
border-style:solid;
border-width:1px;
border-color:grey;
}
.start-skip ~ .element:nth-child(2n) {
background-color: beige;
margin-right: 400px;
}
.end-skip ~ .element:nth-child(2n) {
background-color: transparent;
margin-right: 0;
}
秘訣は、~
(隣接する兄弟) と nth-child()
セレクター (CSS3 の一部) を使用して、長方形のスペースを囲む行の右マージンを設定することです。
を含むルール.start-skip
は広い右マージンをオンにし、 を含むルール.end-skip
は右マージンをゼロにリセットします。
最後に、絶対位置を使用して、要素と要素#blocker
の間のスペースに要素を配置します。.start-skip
.end-skip
このアプローチを拡張して、長方形のスペースの左右に 2 つ以上の要素を配置できるようにすることができます。
デモを参照してください: http://jsfiddle.net/audetwebdesign/QCYya/
例 2: 事前定義された領域の右と下のフローティング要素
この場合、ブロック要素は通常のコンテンツ フローにあり、.element
は右と下にフロートします#blocker
。
HTML が次のようになっているとします。
<div id="Content">
<div id="blocker"></div>
<div class="element">1</div>
<div class="element">2</div>
<div class="element">3</div>
...
</div>
次の CSS を適用します。
#Content {
width:1004px;
height:773px;
margin-left:auto;
margin-right:auto;
border: 1px dotted gray;
overflow: auto;
}
#blocker {
width:800px;
height:573px;
background-color: yellow;
float: left;
}
.element {
width:100px;
height:100px;
float: left;
margin:0;
border-style:solid;
border-width:1px;
border-color:grey;
}
すべての要素をフロートさせると、探しているレイアウトにスタックされます。
境界線があるため、.element
ブロックの幅と高さが 102px であることに注意し、#Content
それに応じて幅を調整してください。
または、幅/高さ.element
を 98px に設定することもできます。
and に設定overflow: auto
する#Content
と、 float が の前後の兄弟要素をラップしないようになり#Content
ます。
デモを参照してください: http://jsfiddle.net/audetwebdesign/AXfA8/