WebCamp・WebCampProを運営する株式会社インフラトップのオウンドメディア【スキルマ】。プログラマー・エンジニア・Webデザイナーを目指す初心者の方に向けた記事や、就職・転職を考えている方向けの記事を発信しています。

【CSS初心者入門】calc関数とは何?使い方も解説!

プログラミング教室・人気ランキング

順位 スクール名 こんな方におすすめ 公式サイト
   Web Camp 【業界最安値】1ヶ月通い放題/Webサービスなど作りたい方 公式サイト 
  TECH BOOST ブロックチェーン/AI/IoTコースあり/3ヶ月でエンジニアに! 公式サイト
Tech Camp Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方! 公式サイト
▼本記事について
本記事は、『たった1ヶ月で未来を変えられる』初心者向けプログラミングスクール「WebCamp(ウェブキャンプ)や、未経験者でも3ヶ月の学習でエンジニアに転職・就職ができる「WebCampPro(ウェブキャンププロ)」を運営してる株式会社インフラトップが提供しています。

みなさんはCSSの学習をしていませんか?

CSSを学習する時にcalc関数が使えることで幅が広がります。

今回の記事ではcalc関数の使い方を解説します!

calc関数とは

CSSでコーディングをしている時、「px」や「%」を使ってコンテンツ幅や高さのサイズ指定することが多いですが、CSS3の「calc()」関数が実装され、プロパティの値を計算式で求めることが可能となりました。

いままで、パターン毎に数値を用意したり、パーセントで調整したりしていましたが、よる柔軟に設定することができてとても便利です。
今回はcalc関数についてご紹介します。

仕様

使用できる演算子は四則計算、加算(+)、減算(-)、乗算(*)、除算(/)になります。

<length>(長さ)、<frequency>(周波数)、<angle>(角度)、<time>(時間)、<number>(数値)、<integer>(整数) 型の値について演算を使用できます。

逆に言えばそれ以外の場所では使えませんので注意が必要です。(たとえば、Colorプロパティの値など)

記述方法

基本的な記述方法は下記のようになります。


section {
width: calc(100%/3 - 2*1em - 2*1px);
}

この時、加算と減算 (+, -) に関しては演算子の前後に半角スペースを必ず入れなければなりません。

乗算と除算 (*, /) に関しては前後の半角スペースについて任意ですが、ソースの統一性やミスを防ぐためにも記述上は前後に半角スペースを入れておくほうが懸命かと思います。

計算の優先順位

calc() 関数による四則計算の優先順位は学校で習うとおりです。

計算順序を指定するために 「括弧()」 を使用することができます。

calc(500 – 10 * 20 – 10 / 2)

上記の記述の場合、500 – 200 – 5 ということになります。例えば加算、減算を優先的に計算したければ calc((500 – 10) * (20 – 10) / 2) のように記述する必要があります。

ただし、乗算を使用する場合は少なくとも1つは「数量」でなくてはならない、除算を使用する場合は演算子の右の値が「数量」でなくてはならないという決まりもあります。

異なる単位の計算

calc関数の計算では、異なる単位の数値の計算を行うことができます。具体的には、相対単位(%やvw, vhなど)と絶対単位(pxなど)を組み合わせることができます。


.foo {
width: calc(100% - 50px);
}

この例では幅いっぱい(100%)から、50pxの固定幅を引いた数値を指定しています。サイドバーのレイアウトなどによく使う記述です。

「calc()」は計算された値は計算式自体であり、結果の値ではない

CSSプリプロセッサで計算式を扱う場合、ブラウザに与えられる値は式の結果の値です。
たとえば、


.foo {
width: 100px + 50px;
}

の場合には、


.foo {
width: 150px;
}

がブラウザに渡されます。

しかし、「calc()」ではブラウザによって解析された値が実際の「calc()」の計算式です。


.foo {
width: calc(100% - 50px);
}

これはブラウザにおける値がより動的になり、ビューポートの変更に合わせて適応できることを意味します。
例えば、ビューポートの高さから絶対値を引いた要素をビューポートの変更に合わせて適応させることができます。

「calc()」の入れ子

「calc()」の計算式は、入れ子で利用できます。
ただし、内部関数は単純なかっこ式として扱われます。


.foo {
width: calc( 100% / calc(100px * 2) );
}

上記の「calc()」の入れ子の計算式の計算値は下記のようになります。


.foo {
width: calc( 100% / (100px * 2) );
}

まとめ

CSS側で柔軟に対応できるcalc関数はCSS3の中でもとても有効な機能の一つです。

レイアウトデザイン上でも重要な役割を今後担う機能ですので、ぜひ活用してください。

1ヶ月でHTML・CSSができる!「WebCamp」とは?

WebCampは1ヶ月でプログラミング・Webデザインスキルを学ぶ通い放題のプログラミングスクールです。

参加する方の90%は未経験者です!

短期集中型のスクールなので、期間を決めて圧倒的に効率よくサイト制作スキルを身に着けたい方におすすめです!

わからないことを講師にすぐ質問できたり、通い放題で自分のスケジュールに合わせて来校することができるので、独学で学習するよりも早く確実にスキルが身につきます。

学習の疑問点やWebスキルのマスターの仕方がわかる無料説明会も開催しています。ぜひお気軽にお申込みください!

▼未経験から1ヶ月でWebデザイン・プログライミングを学びたい方はこちら!

▼IT未経験からエンジニアに就職・転職したい方はこちら!