画像の下に回り込みをさせない
こんにちは、ゼノフィ渡部です。
画像の横幅や高さが変わっても画像の下にテキストが回り込まない方法をご紹介いたします。
サンプルでは画像とテキストはp要素でマークアップしていますので、p要素が元々持っているマージンやパティングを消去します。
「div.img_box 」では画像とテキストを入れるボックスの幅や適当なスペースを指定しています。「div.img_box p」の「overflow: hidden;」でテキストの回り込みを防いでいます。IE6ブラウザは「overflow: hidden;」だけでは回り込んでしまうので、「zoom: 1;」プロパティを指定しています。
「div.img_box p.img_l 」で画像を左寄せ、「div.img_box p.img_r 」で画像を右寄せにしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | p { margin: 0; /* 余分なマージンを消去 */ padding: 0; /* 余分なパディングを消去 */ } div.img_box { width: 398px; margin: 0 0 20px; padding: 10px; border: 1px solid #CCC; background: #F9F9F9; } div.img_box p { overflow: hidden; zoom: 1; /* IE6 */ } div.img_box p.img_l { float: left; margin: 0 10px 5px 0; } div.img_box p.img_r { float: right; margin: 0 0 5px 10px; } |
画像の大きさが大小異なり、左寄せと右寄せになる合計4つのソースを記述しています。このソースで特筆するべきところは、画像が左寄せ、右寄せと表示が違う場合でも、画像とテキストを記述する順番が同じという点にあります。マークアップの正否はケースバイケースですが、必ず画像が先、テキストが後、という組み方をしたい場合は便利だと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <!-- 画像大・左寄せ --> <div class="img_box clearfix"> <p class="img_l"> <img src="img_big.gif" width="120" height="74" alt="サンプル画像大" /> </p> <p> テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。 </p> </div> <!-- 画像小・左寄せ --> <div class="img_box clearfix"> <p class="img_l"> <img src="img_small.gif" width="100" height="62" alt="サンプル画像小" /> </p> <p> テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。 </p> </div> <!-- 画像大・右寄せ --> <div class="img_box clearfix"> <p class="img_r"> <img src="img_big.gif" width="120" height="74" alt="サンプル画像大" /> </p> <p> テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。 </p> </div> <!-- 画像小・右寄せ --> <div class="img_box clearfix"> <p class="img_r"> <img src="img_small.gif" width="100" height="62" alt="サンプル画像小" /> </p> <p> テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。 </p> </div> |
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | p { margin: 0; /* 余分なマージンを消去 */ padding: 0; /* 余分なパディングを消去 */ } div.img_box { width: 398px; margin: 0 0 20px; padding: 10px; border: 1px solid #CCC; background: #F9F9F9; } div.img_box p { overflow: hidden; zoom: 1; /* IE6 */ } div.img_box p.img_l { float: left; margin: 0 10px 5px 0; } div.img_box p.img_r { float: right; margin: 0 0 5px 10px; } /* クリアフィックス */ .clearfix:after { content: ""; display: block; clear: both; } .clearfix { overflow: hidden; zoom: 1; } |
HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <!-- 画像大・左寄せ --> <div class="img_box clearfix"> <p class="img_l"> <img src="img_big.gif" width="120" height="74" alt="サンプル画像大" /> </p> <p> テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。 </p> </div> <!-- 画像小・左寄せ --> <div class="img_box clearfix"> <p class="img_l"> <img src="img_small.gif" width="100" height="62" alt="サンプル画像小" /> </p> <p> テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。 </p> </div> <!-- 画像大・右寄せ --> <div class="img_box clearfix"> <p class="img_r"> <img src="img_big.gif" width="120" height="74" alt="サンプル画像大" /> </p> <p> テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。 </p> </div> <!-- 画像小・右寄せ --> <div class="img_box clearfix"> <p class="img_r"> <img src="img_small.gif" width="100" height="62" alt="サンプル画像小" /> </p> <p> テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。テキストが画像の下に回り込みません。 </p> </div> |