cssのbackgroundプロパティで使用できる「cover」という値は、画像の縦横比を保ったまま背景領域を全て覆うように自動で拡大縮小する便利なプロパティです。
ただ、この値を使うには画像を背景に指定する必要があり、imgタグで画像を配置したい場合は使用できません。そこで今回は、imgタグでも同じ効果を再現できるjQueryを紹介します。
デモはこちら。実際のコードは以下です。
html
1 2 3 4 5 |
<div class="box"> <figure><img src="https://sole-color-blog.com/manage/wp-content/uploads/2016/03/bgImg01.jpg" alt=""></figure> <p>サンプルです</p> </div> |
css
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
.box { width:250px; } .box figure { position:relative; height:250px; } .box figure img { position:absolute; max-width:100%; height:auto; top:50%; left:50%; transform:translate(-50%,-50%); } |
JS
1 2 3 4 5 6 7 8 9 10 11 12 |
$(window).on("load",function(){ // 画像の高さを取得する var imgH = $(".box figure img").height (); // 画像の高さが250px以下なら高さを優先する if( imgH < 250 ) { $(".box figure img").css({ "max-width":"none", "width":"auto", "height":"100%" }); } }); |
「中身が空の要素を作りたくない」という時にはとても便利なので、ぜひ使ってみてください!