社員ブログ

レスポンシブ対応 画像を正方形にトリミングするCSS

2016年09月20日 火曜日

先日、縦長の画像をレスポンシブ(可変)対応で正方形にトリミングして表示する、というミッションがありましたので備忘録がてら書きます。

スマホの画像を使いたいが縦長すぎるので可変トリミングして欲しい、という時に役立ちそうです。
イメージがわかない方は下の画像(gifアニメーション)を御覧ください。

square
photo by PAKUTASO

コードは以下のとおりです。

ポイントはbefore擬似クラスのpadding-top:100%ですね。
これで横幅に対する高さを計算しています。

このpadding-topの値はボックスのwidthとheightの比率をもとに以下の式で計算します。

縦幅比率 / 横幅比率 * 100

ちなみに、正方形ではなく横縦3:2の四角形でトリミングしたいときは、
2 / 3 * 100 = 66.6666・・・
であるため、padding-topは66.667%と設定するだけです。

※今回は写真をきれいにトリミングするためにimgにbottom:0;を設定しています。
imgに設定するpositionは画像に合わせて適宜設定してください。

文字サイズサイズ小サイズ中サイズ大