レイアウトの問題はdisplay: inline-block
、div 要素に適用した結果です。
これらの div 要素間の空白は、コンテンツのレイアウト時に考慮されます。ソース コードの外観が気にならない場合は、div 間の空白 (ラインフィードまたはキャリッジ リターン) を削除できます。
親コンテナーには特定のサイズ (500px x 300px) があるため、絶対配置を使用して子要素を配置します。これにより、ロゴ モチーフを他の画像の上に配置しやすくなります。
他の回答で述べられているように、フロートを使用することもできますが、簡単でも難しくもありません。
このアプリケーションでは、レイアウトが固定されているため、レスポンシブ デザインやフレキシブル デザインに関する設計上の考慮事項がないため、どちらのアプローチも有効です。
デモ
次のデモでこれがどのように機能するかを確認できます: http://jsfiddle.net/audetwebdesign/hZ5dB/
HTML:
<div class="container">
<div class="panel ul"></div>
<div class="panel ur"></div>
<div class="panel ll"></div>
<div class="panel lr"></div>
<div class="overlay"><span>Cats</span></div>
</div>
そしてCSS:
.container {
border: 1px dotted blue;
width: 500px;
height: 300px;
position: relative;
margin: 0 auto;
}
.panel {
width: 250px;
height: 150px;
position: absolute;
}
.ul {
background: red url("http://placekitten.com/400/400") -50px -20px no-repeat;
top: 0; left: 0;
}
.ur {
background: red url("http://placekitten.com/300/300") 0px -30px no-repeat;
top: 0; right: 0;
}
.ll {
background: red url("http://placekitten.com/350/250") -20px -20px no-repeat;
bottom: 0; left: 0;
}
.lr {
background: red url("http://placekitten.com/300/200") 0px -30px no-repeat;
bottom: 0; right: 0;
}
.overlay {
position: absolute;
top: 50%;
left: 50%;
margin: -50px 0 0 -50px;
width: 100px;
height: 100px;
background-color: red;
border-radius: 50%;
}
.overlay span {
display: block;
background-color: gray;
border-radius: 50%;
text-align: center;
vertical-align: middle;
width: 80%;
height: 80%;
margin: 10%;
line-height: 80px;
}
また、元の背景画像を変更せずに円形のモチーフを作成し、PhotoShop などで少し手間を省く方法も示します。