1. ホーム
  2. Web制作
  3. html5

divやimgの画像の高さを幅に合わせる方法

2022-01-14 18:16:33

この方法は主にサイトの適応性を高めるために使用されますが、画像を読み込んだ後にコンテンツの高さを保持し、ページのスクロールを回避するためにも実装することが可能です。

I. 画像の幅をjsで決定して特定の値を取得し、jsで画像の高さを設定することができます(ここでは詳しく説明しません)。

jsを使うデメリットとしては、画像の高さを調整できるのはページ更新時のみで、ブラウザのウィンドウサイズが変わると適応できないことが挙げられます。

次に、画像の高さ適応の問題ですが、今回は主にcssを使用して実装しました。

以下は必要なコードです。

(これは、テキストを画像の上に垂直に中央揃えで表示する方法なので、必要なければ、下のほうのすっきりしたコードを選んでください)

<div class="box">
 <span>Vertical centering of in-line elements</span>
 <div class="img-box">
  <img src="123.jpg"/>
        </div>
</div>


.box{
 width: 50%;
 margin: 50px auto;
}
.img-box{
 width: 100%;
 position:relative;
 z-index:1;
}
.img-box img{
 position:absolute;
 top:0;
 bottom:0;
 left:0;
 right:0;
 width:100%;
 margin:auto;
 z-index: -1;
 *zoom:1;
}
.img-box:before {
 content: "";
 display: inline-block;
 padding-bottom: 100%;
 width: 0.1px; /* must have value, otherwise it won't hold the height up */
 vertical-align: middle;
}



1. ここでの主な説明は、padding-bottomプロパティは、その値がパーセンテージである場合、要素の幅によって計算されるということです。つまり、100%に設定すると、その高さは幅と同じになり、正方形が形成されます。もちろん、この値は実際の状況に応じて調整することができます。
2. 2つ目の注意点は、参照した画像は絶対位置指定によってレイアウトされているため、親要素のサイズに追従して適応を実現できることです。

もうひとつのきれいな方法は、imgの親要素に直接padding-bottomを追加することです。

<div class="img-box">
 <img src="123.jpg"/>
</div>

.img-box{
 padding-bottom:100%;
}
.img-box img{
 position:absolute;
 top:0;
 bottom:0;
 left:0;
 right:0;
 width:100%;
 margin:auto;
}



以上、本記事の全内容をご紹介しましたが、皆様の学習のお役に立てれば幸いです。また、Script Houseをより一層応援していただければ幸いです。