任意のマージン比率で
margin: auto;風の挙動を実現!

コンテンツの左右のmarginが微妙に違う時のレスポンシブ対応に困ってませんか?
この記事では、要素の左右マージン比率を自由に調整し、margin: auto;の配置に似た挙動を実現する方法をご紹介。

実現したい挙動は、


  max-width:1200px;
  margin:auto;
 padding:0 16px;
  

上記のソースのように、画面幅が狭まるに連れて左右のmarginが自動的に減少し、コンテンツの幅が1200pxまで来たら、幅が減少していくような挙動。(paddingは、縮小時にコンテンツが画面端に密着するのを避けるため)

しかし、左右のmarginが異なっている場合、任意値のmarginを指定してしまうと、marginが減少しません。

calc()を利用してmargin: auto;風

下記のソースで実現します。
左右で、2:3の比率の場合。


.box {
  max-width: 1200px;
  margin-left: calc((100% - 1200px) * 2 / 5);
  margin-right: auto;
}

簡単解説

calc((100% – 1200px) * 2 / 5) は、「画面全体の幅から1200ピクセルを引いた値の2/5」を計算しています。
(100% – 1200px)←これで左右のmarginの合計となる部分が出ますね!
そして、その左右のmargin合計を5で割って2をかけるという、比率の計算をするだけです。

簡単な例…
親要素の幅が1600pxだと仮定すると、


(100% - 1200px) * 2 / 5
= (1600px - 1200px) * 2 / 5
= 400px * 2 / 5
= 160px

となります。これが左側のマージンの幅になります。右側のマージンも同様に計算され、結果として左右のマージンが2:3の比率で調整されたレスポンシブなデザインが得られます。

まとめ

画面幅に合わせて、marginを増減させることができるので便利ですね。
出番は少なそうですが、覚えていて損はなさそうです!

記事一覧に戻る

ABOUT

顔写真

はじめまして。ナナちゃんと申します。
28歳、バツイチ独身、二人の子持ちの主婦です。

離婚をきっかけに、WEB制作を勉強し始めました。
今は、WEB制作会社でHTMLコーダーをしています。
このサイトでは、HTML、CSSはもちろんワードプレスを使った制作の知識を書いていきます。