Widely available 安心して使用可能。すべての主要ブラウザで長年サポートされている。

概要

calc() を使うと、px・%・em・vw など異なる単位を混在させた計算式をCSSプロパティの値として記述できる。レスポンシブレイアウトでの余白計算や、固定幅と可変幅の組み合わせなど、従来JSで行っていた計算をCSSだけで完結できる。ネストも可能で、他のCSS関数内でも使用できる。

対応ブラウザ

デスクトップ

Chrome 26+
Edge 12+
Safari 7+
Firefox 16+

モバイル

Chrome Android 28+
Safari iOS 7+
Firefox Android 16+

基本構文

CSS
.sidebar-layout {
  /* サイドバー幅を引いた残りをメインに */
  width: calc(100% - 250px);
}

.centered-box {
  /* ビューポート中央に配置 */
  margin-top: calc(50vh - 200px);
}

.fluid-padding {
  /* 最小16px、ビューポート幅に応じて拡大 */
  padding: calc(1rem + 2vw);
}

実務での使いどころ

  • レイアウト計算

    固定幅のサイドバーを差し引いた残りの幅をメインコンテンツに割り当てる。

  • レスポンシブな余白

    remとvwを組み合わせて、画面サイズに応じた流動的なパディングを設定する。

注意点

  • 演算子(+、-)の前後にはスペースが必須。calc(100%-20px) はエラーになる。

アクセシビリティ

  • calc() で算出したフォントサイズが小さくなりすぎないよう、最小サイズに配慮する。