解 説
もと画像の一部分を切り出したり、サイズを自動調整したりして作る「サムネイル」画像は、ブログやギャラリーなどの一覧表示に多用されます。このサムネイルの設定が適切でないと、一覧表示がバラバラな印象になったり、何の画像なのか?がわかりにくくなったりするので、大切なポイントの一つです。そこで、縦・横・センターのそれぞれに合わせるサムネイル画像の作り方をご紹介します。CSSのみで設定できますので、是非覚えておきましょう!
1まず、htmlの構造からご紹介します
【この画像をサムネイルにしていきます】
上記では、外枠に<div>タグを使っていますが、<p><i>などブロック要素であれば問題ありません。
リンク表示として<a>タグを使う場合には、CSSに display:block;を設定してブロック要素に変換しましょう。
2外枠にサイズを指定して、【 overflow : hidden ; 】を設定して切り取ります。
/* トリミングする外側の枠 */ .trim { overflow: hidden; width: 200px;/* トリミングしたい枠の幅 */ height: 200px;/* トリミングしたい枠の高さ */ }
3画像の縦(高さ) 100%に合わせる場合
/* トリミングする外側の枠 */ .trim { overflow: hidden; width: 200px;/* トリミングしたい枠の幅 */ height: 200px;/* トリミングしたい枠の高さ */ } /* 高さに合わせてリサイズ、はみ出た分をトリミング */ .trim img { width: auto; height: 100%; }
【height: 100%;】と【width: auto;】を追記します。
これで画像の比率を保ったまま、縦幅いっぱいに画像を自動調整できます。
4画像の横(幅) 100%に合わせる場合
/* トリミングする外側の枠 */ .trim { overflow: hidden; width: 200px;/* トリミングしたい枠の幅 */ height: 200px;/* トリミングしたい枠の高さ */ } /* 横幅に合わせてリサイズ、はみ出た分をトリミング */ .trim img { width: 100%; height: auto; }
横幅100%に合わせる場合には、
【height: auto;】と【width: 100%;】を追記します。
5センターの位置を指定して、画像の中心をトリミングする場合
/* トリミングする外側の枠 */ .trim { overflow: hidden; width: 150px;/* トリミングしたい枠の幅 */ height: 150px;/* トリミングしたい枠の高さ */ position: relative; } /* 縦・横センターに合わせて、サイズ調整せずに、はみ出た分をトリミング */ .trim img { position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); }
この設定では、画像サイズは調整されず(元画像のサイズのまま)、外枠に合わせて画像の中心部分を切り抜く表示になります。
外枠の.trimに【position: relative;】を設定して起点をつくります。
中身のimgには【position: absolute;】と【 transform : translate();】を設定して画像の位置をセンターに合わせています。
6縦(高さ)100%に合わせてサイズ自動調整、さらに画像をセンターに合わせる方法
/* 高さに合わせてリサイズ、はみ出た分をトリミング */ .trim img { position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); width: auto; height: 100%; }
高さ100%に合わせて、さらに左右をセンターに合わせる事ができます。
7横(幅)100%でサイズ自動調整、さらに画像をセンターに合わせる方法
/* 横幅に合わせてリサイズ、はみ出た分をトリミング */ .trim img { position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); width: 100%; height: auto; }
横幅 100%に合わせて、さらに上下をセンターに合わせる事ができます。
8画像の縦と横のサイズの大きい方に合わせて自動調整する場合
/* 画像の縦と横、大きいほうに合わせてリサイズ */ .trim img { position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); max-width: 100%; max-height: 100%; width: auto; height: auto; }
もと画像は横向きなので、上記のようにサムネイル(外枠)の寸法が変わる場合には、
横幅100%に自動調整されると縦に隙間ができます。
縦・横の寸法が200pxのサイズでトリミング(黒い部分は非表示化)されます。ただ、このままの設定だと左上から画像の端を切り取ってしまうので、何の画像なのか?わかりにくく、表示として良くありません。そこでCSSを追加して切り取る画像位置やサイズを調整します。