ZeroPlus Gateについて

\ シェア /

FacBook
Twitter
LINE
はてブ
PPocket
ZeroPlus Media > Web制作 > HTML/CSS > 【CSSで四則演算】calc()関数の使い方を徹底的に解説

【CSSで四則演算】calc()関数の使い方を徹底的に解説

HTML/CSS

2022/02/24

2023/04/22

CSS calc 計算方法記事サムネイル

Webサイトの作成時に要素の配置が思い通りにならず困ることはありませんか。そのようなとき、CSSで計算を行うことで正確に要素を配置することができます。

CSSで計算を行うには、calc()関数を使用します。calc()関数を使用すれば要素の均等な配置やレスポンシブ対応を簡単にできます。

この記事ではcalc()関数の使い方を解説します。実際にcalc関数を使用する場面などを紹介するので参考にしてみてください。

この記事で身につく内容
  • calc()関数とは
  • calc()関数の使い方
  • calc()関数の注意点
  • calc()関数の使用例

ZeroPlus Gateについて

プログラミング学習でこのような経験はありませんか?

  1. 目標に向けて何を学べば良いかわからない
  2. 調べても解決策が見つからない
  3. 現場レベルのスキルが身につくのか不安

これらの悩みは、学習環境を整えることで全て解決することができます。

ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

  1. なんでも相談できる専属メンター
  2. いつでも技術相談ができるプロ講師
  3. 元IT企業CTO監修のカリキュラム

条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
ただし、無料サービスの提供には参加者の数に制限があります。

少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

今すぐZeroPlus Gateの詳細を見る

calc関数とは

calc関数はCSSで四則演算(足し算・引き算・掛け算・割り算)ができる関数です。

以下の記号を用いて、関数内で四則演算をします。

計算方法演算子
足し算+
引き算-
掛け算*
割り算/

calc関数の使い方

記述方式

calc関数の記述例は以下の通りです。

div{
    width: calc(100px + 20px);
  }

またcalc関数では違う単位同士の計算も可能です。

div{
    width: calc(100% + 20px);
 }

四則演算の優先順位

calc関数内での四則演算にも優先順位があります。優先順位は一般的な数式と同様に以下の通りです。

  1. かっこ内にある数式
  2. 掛け算・割り算
  3. 足し算・引き算

例えば、次のような計算式があるとします。

div{
    width: calc((100px + 50px) * 20px);
  }

この場合はかっこ内の100px + 50pxが先に計算されます。値は150px * 20pxの計算結果となります。

入れ子での記述

calc関数は入れ子の構造にもできます。calc関数の中でcalc関数を使用することを入れ子といいます。

div{
    width: calc(calc(100px + 50px) * 20px);
  }

内部の関数はかっこ式として扱われます。

ZeroPlusgate50教材の動画

calc関数の注意点

「+」「-」の前後には半角スペースを入れる

足し算や引き算を行う場合には「+」「-」の前後に半角スペースを入れる必要があります。「+」「-」はプラスの値、マイナスの値という意味も持っています。このため半角スペースを入れないと数値の正負として判断されてしまうのです。

「*」「/」の前後には半角スペースを入れる必要はありません。

単位をつける数値の使い分け

calc関数内の数値には単位が必要です。ただし、足し算・引き算の場合と掛け算・割り算の場合で単位のつけ方が変わるので注意が必要です。

足し算・引き算の場合

足し算・引き算の場合には両方の数字に単位をつける必要があります。単位を入れ忘れると正常な計算ができません。

かけ算・割り算の場合

かけ算・割り算の場合には単位のある数字同士だと計算できません。かける数と割る数には単位をつけないようにしましょう。「後に記述する数字に単位をつけない」と覚えておくと簡単です。

0で割ってはいけない

割り算をする場合には0で割ってはいけません。0で割った場合の計算結果が定義できないためです。厳密には数学上のルールとして禁止されているわけではありませんが、この記事では「0で割ってはいけない」としています。

calc関数を使用できるプロパティ

calc()は全てのプロパティで使用できるわけではありません。

calc()が使えるCSSのプロパティには以下のものがあります。
基本的によく使用するプロパティが多いのですぐにアウトプットすることができます。

calc関数が使えるプロパティ一覧

  • width
  • height
  • margin
  • padding
  • border-width
  • font-size
  • text-shadow
  • transform
  • animation
  • transition

これらのプロパティにはある特徴があります。
それぞれ、length(距離)、frequency(周波数)、angle(角度)、time(時間)、 number(実数)、integer(整数)のデータ型の値になっています。

上記以外にもこれらのデータ型の値のプロパティであればclac関数を用いて値を設定することができます。

calc関数の使用例

calc関数を使用すれば要素の均等な配置やレスポンシブ対応が非常に簡単に行えます。レスポンシブ対応ではブレークポイントごとに書き直す必要はなく、CSSの保守性の面でも優れています。

要素の横幅を3等分にする

横並びの3つの要素を均等な横幅にしたい場合などにcalc関数が有用です。

例えばある要素の横幅を3等分にしたい場合、%での指定だとwidth: 33.3%;などと指定します。しかしこの方法だと厳密には3等分になりません。そこでcalc関数を使用すれば完全に均等な配置が可能になります。

See the Pen Untitled by ZeroPlus (@zeroplus-programming) on CodePen.

今回はwidthを例にしました。heightなどにも同様の指定が可能です。

ZeroPlusgate50教材の動画

2カラムレイアウトで固定幅と可変の幅を設定する

メインコンテンツとサイドバーがある2カラムのレイアウトを例にしてみましょう。メインコンテンツの幅を可変に、サイドバーは固定にしたい場合にcalc関数が役立ちます。

See the Pen Untitled by ZeroPlus (@zeroplus-programming) on CodePen.

画面幅変更時にメインコンテンツのみwidthが可変となります。

calc関数の対応ブラウザ

calc関数は現在対応している主要ブラウザであれば、基本的に全てのブラウザで対応しています。
詳しくはcalc() - CSS: カスケーディングスタイルシート | MDNをご覧ください

まとめ

calc関数は異なる単位同士で四則演算を行えます。このため要素の正確な配置やレスポンシブ対応の効率化などに有用です。calc関数を使用する場面はそれほど多くありませんが、制作を行う上で柔軟な対応ができるよう覚えておきましょう。

calc()関数まとめ

  • CSSで四則演算を行える関数
  • 違う単位同士の計算も可能
  • 要素の均等な配置やレスポンシブ対応に有用
ZeroPlus Gateについて

プログラミング学習でこのような経験はありませんか?

  1. 目標に向けて何を学べば良いかわからない
  2. 調べても解決策が見つからない
  3. 現場レベルのスキルが身につくのか不安

これらの悩みは、学習環境を整えることで全て解決することができます。

ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

  1. なんでも相談できる専属メンター
  2. いつでも技術相談ができるプロ講師
  3. 元IT企業CTO監修のカリキュラム

条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
ただし、無料サービスの提供には参加者の数に制限があります。

少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

今すぐZeroPlus Gateの詳細を見る

\ 学んだことをSNSでシェアしよう /

おすすめのタグ

この記事の執筆者

ZeroPlus Media変種部

ZeroPlus Media編集部

ZeroPlusは、「フリーランス特化型プログラミングスクール」です。ZeroPlus Mediaでは、フリーランスとして活躍する際に役立つ有益なプログラミングやWeb制作に関する情報を発信しています。

質問について

ZeroPlus Media読者限定で質問対応をおこなっています。以下の2つの方法で質問を受け付けています。

選べる2つの質問方法

1

Google Foam(テキスト)で質問

mail

フォーム送信

メールで解答

formで質問
2

Google meet(オンラインmtg)で質問

meet

日時選択

メールを受け取る

メールからmtgに参加

meetで質問
ZeroPlus Gateについて

あなたの目的に合わせた2つのサービス

あなたの目的に合わせたZeroPlusの2つのサービス
基礎からフリーランスレベルまで本質的な学びを提供しています

完全無料!30日間で学びきれる
プログラミンスクールZeroPlus Gate

  • お金をかけずに、学習を進めたい
  • Webサイトを作れるようになりたい
  • メンターや講師に質問しながら学習したい

詳しくはこちらから

フリーランス特化型
プログラミングスクール ZeroPlus

  • プログラミング学習で悩んでいる
  • 仲間と一緒に学習したい
  • フリーランスとしての総合的な力を養いたい

詳しくはこちらから