Logo Webマーケティングに
強くなるメディア

  • ログイン
  • 会員になる
  • ログイン
  • 会員になる

  • 総合

    • 新着
    • ランキング

    トレンドを知る

    • ノウハウ&トレンド ニュース
    • リリース ニュース
      - ferret×PR TIMES -
    • マーケター特集
      - マーケティングジャーニー -
    • おすすめツールソリューション情報
      - by Marketer's STORE -
    • マーケターのキャリアとは
      - ferret × マイナビ転職 -

    体系的に学ぶ

    • 基礎〜応用を学ぶ
      - カリキュラム -
    • コンテンツマーケティングを学ぶ
    • Googleアナリティクスガイド
    • 事例
    • セミナー
    • 資料ダウンロード
    • マーケティング用語辞典

    実践ツール

    • 誰でもホームページ作成/運用ができる
      - ferret One -
    • 1文字0.8円〜!
      - ferret コンテンツライティング -
    • ソリューション紹介メディア
      - Marketer's STORE -
    • ferretのノウハウを公開
      - オウンドメディア運用・構築支援 -
    • Instagram分析ツール
      - ナビスタ -

    Info

    • ferretとは
    • 運営会社
    • メンバー紹介
    • 著者一覧
    • お問い合せ
    • 広告掲載について
    • 利用規約
    • プライバシーポリシー
    • 特定商取引法に基づく表示

  • 新着
  • ランキング
  • トレンドを知る
    • ノウハウ&トレンド ニュース
    • リリース ニュース
      - ferret×PR TIMES -
    • マーケター特集
      - マーケティングジャーニー -
    • おすすめツールソリューション情報
      - by Marketer's STORE -
    • マーケターのキャリアとは
      - ferret × マイナビ転職 -
  • 体系的に学ぶ
    • 基礎〜応用を学ぶ
      - カリキュラム -
    • コンテンツマーケティングを学ぶ
    • Googleアナリティクスガイド
    • 事例
    • セミナー
    • 資料ダウンロード
    • マーケティング用語辞典
  • 実践ツール
    • 誰でもホームページ作成/運用ができる
      - ferret One -
    • 1文字0.8円〜!
      - ferret コンテンツライティング -
    • ソリューション紹介メディア
      - Marketer's STORE -
    • ferretのノウハウを公開
      - オウンドメディア運用・構築支援 -
    • Instagram分析ツール
      - ナビスタ -
  1. TOP
  2. ニュース
  3. CSSでプログラミング?圧倒的にデザインが便利になる「CSSカスタムプロパティ」入門
  1. shares
Normal

CSSでプログラミング?圧倒的にデザインが便利になる「CSSカスタムプロパティ」入門

  • Profile
  • 酒井 涼
  • 2017年5月30日
  • ニュース
  • 1,132
Profile

ライター・コラムニスト。デザインやテクノロジー、マーケティングやライフハック系の記事が得意。2016年からferretでも記事の執筆を開始。Twitterでも面白いWebサービスなどを紹介しています。よろしければそちらもチェックしてみてください。
  
>> 執筆記事一覧はこちら

SassのようなCSSプリプロセッサーが登場してもう5年以上が経過しました。
SassやLESSは関数や変数などを使うことができるので非常に便利です。
関数や変数を使えるようになるだけで、大量のコードをコピーアンドペーストするという作業を省くことができ、サクサクと開発を進めることができるようになります。

ところが、コンパイルを行わなければならないという一手間が億劫で業務ではまだ使っていないという現場も多いのではないでしょうか。

さらに、プリプロセッサーの変数にはいくつかの制限もあります。
変数はDOM構造と結びつくことはなく、JavaScriptから読み込んだり変更したりすることができないという点です。

そうした問題に対処するために新しくCSSに導入されたのが、「CSSカスタムプロパティ」(CSS Variables)です。
基本的に、CSSカスタムプロパティは、プリプロセッサーの変数と同じように働きます。

今回は、圧倒的にデザインが便利になる「CSSカスタムプロパティ」についての基本的な使い方を解説します。
プリプロセッサーを使う時のようにコンパイルを行う必要もなく、新しく文法を覚える必要もありません。

Curriculum pt1

「CSSカスタムプロパティ」の基本

大抵の場合、言語やフレームワークを新しく学ぶためには、新しい文法を学んでいく必要があります。

プリプロセッサーではそれぞれ変数を宣言する方法が異なります。
例えば、Sassであれば「$」、LESSであれば「@」を変数名の前につけます。

CSSカスタムプロパティでは、同じように「--」(ダッシュ2つ)を変数の前につけます。
ありがたいことに、新しく覚えるのはたったこれだけのルールで、ブラウザごとに文法を分けて書く必要は一切ありません。

例えば、boxのcolorやpaddingを指定したいとき、変数の前に「--」をつけて次のように指定します。

.box{
  --box-color: #0060e6;
  --box-padding: 0 10px;
}

変数を使いたい時には「var()」というCSSの関数を使い、括弧の中身にカスタムプロパティー名を入力します。

.box{
  --box-color: #0060e6;
  --box-padding: 0 10px;
  padding: var(--box-padding);
}

.box div{
  color: var(--box-color);
}

「var()」を使った方法は非常に簡単です。
しかも、カスタムプロパティーが前に宣言されているかどうかわからない時にも、次のように使うことで、フォールバックを設定することができます。

.box{
  --box-color: #0060e6;
  --box-padding: 0 10px;
  margin: var(--box-margin, 10px);
}

この場合、「--box-margin」は以前に宣言されていないので、marginは10pxのほうを取ります。

このような使い方をすることもできます。

.box{
  padding: var(--box-padding, var(—key-padding));
}

上の例では、「--box-padding」が指定されていない場合には、「--main-padding」を採用します。

演算子を使ってみる

CSSプリプロセッサーや他の言語と同様に、変数に基本演算子(+, -, *, /)を混ぜて使うこともできます。
CSSの場合は「calc()」関数が用意されており、カスタムプロパティーを含めた演算を行います。

.box{
  --base-size: 10px;
  --indent-xl: calc( 2 * var(—base-size));
  --indent-l: calc(var(—base-size) + 2px);
  --indent-s: calc(var(—base-size) - 2px);
  --indent-xs: calc(var(—base-size) / 2);
}

やっかいなのは、単位をつけるかどうかです。
しかし、単位は次のように「calc()」の中に入れてやることで解決します。

.box{
  --space: 10;
  padding: var(--space)px 0; // ×
  padding: calc(var(--space)*1px) 0; // ○
}

CSSワイドなキーワードにも対応

CSSカスタムプロパティは他のCSSのプロパティと同じルールで働きます。
したがって、CSSワイドな値である「initial」や「unset」なども対応しています。

  • initial:初期値を指定値にする
  • inherit:継承値を指定値かつ算出値にする
  • unset:継承するプロパティについてはinherit、そうでないものにはinitialにする
  • revert:ユーザーエージェントのスタイルシートによって決められた初期値にする

これらをCSSで使うと、例えばこのようになります。

.common-values{
  --border: inherit;
  --bgcolor: initial;
  --padding: unset;
  --animation: revert;
}

また、コンポーネントを作りたい時に、うっかりして他のスタイルやカスタムプロパティを読み込みたくない場合があります。
通常、そうした場合にはCSSをモジュール化して組み込むのが一般的な解決策でしょう。

しかし、「all」プロパティを使うことで解決することができます。
このプロパティは、CSSプロパティをすべてリセットしたい時に使います。

.all-reset{
  all: initial;
}

しかし、残念ながらこの「all」プロパティはCSSカスタムプロパティまではリセットを行いません。
現在、「--」という接頭辞を「all」と同じように使ってカスタムプロパティをリセットできるようにするかどうか、議論が行われています。

最終的には、このようにリセットが行われるようになります。

.all-custom-properties-reset{
  --: initial;
}

JavaScriptでカスタムプロパティの値を取得する

CSSカスタムプロパティはDOM操作に対応しているので、JavaScriptを使ってCSSカスタムプロパティの値を取得することができます。

例えば、以下のCSSカスタムプロパティを定義したとしましょう。
:root {
  —font-color: #0060e6;
}

JavaScript側では、このように定義します。

var value = document.documentElement.style.getPropertyValue(‘—font-color');
console.log(value);

CSS側でどんな変数が定義されているのかを見に行き、JavaScriptで何かしらの処理を入れられるようになります。

また、値を変更する場合はこのように処理を行います。

document.documentElement.style.setProperty('--key-color', ‘ #006090 ’);

まとめ

これまで、変数などを使うにはSassなどのプリプロセッサーを使って処理するのが主流でした。
CSSカスタムプロパティはようやくさまざまなモダンブラウザで対応するようになったので、これからネイティブのCSSでもますます使う機会が増えてくるでしょう。
最初のうちはレガシーブラウザのことを考えて対応する必要があるかもしれませんが、ぜひ積極的に利用してみてください。

Webマーケティングのノウハウ集をプレゼント!

ferretマーケティングメソッド(無料)

創業より10年以上、Webマーケティングの最前線で弊社が得てきた効果をあげるためのノウハウを1つの資料にまとめました。(全83ページ)

抜粋版のサンプルを読む(全3ページ)限定版の資料をダウンロードする(全83ページ)

Original

PRferretライター募集

Logo icon

現会員350,364人

ログインはこちら

会員限定Webマーケティングのノウハウをまとめた資料を限定公開

新着をキャッチ

  • RSS を購読する
  • Twitter をフォローする
  • facebook でファンになる
  • LINE で友だちになる
  • 昨日
  • 週間
  • 月間
Thumb

レポート作成を爆速に!広告運用業務の負担を一気に削減する「アドレポ」とは?

Thumb

ゆるキャラグランプリ受賞企業から学ぶ、ファンを生み出すキャラクター作りのポイント

Thumb

読者との距離がグッと縮まる!簡易的なOne to Oneメールを実現させる"差し込み機能"の上手な使い方

Thumb

LINE@(ラインアット)完全マニュアル〜作り方・料金プランなどを解説

Thumb

論理的思考を育てよう!帰納法・演繹法・アブダクションの3つの推論過程とは

Thumb

もう1人の自分となるAIアシスタント。チャットボットから見えてくるプラットフォーマーたちの人工知能戦略

Thumb

LINE@(ラインアット)完全マニュアル〜作り方・料金プランなどを解説

Thumb

国の統計を自由にグラフ化!総務省の「統計ダッシュボード」を使いこなそう

Thumb

元サッカー日本代表監督の岡田武史氏が「自分と異なる考えの持ち主をコーチに抜擢した」理由とは?指導者が意識すべき"2つの約束"に迫る

Thumb

誰でも簡単に"類似画像"を発見できる!画像検索サイト7選

Thumb

誰でも簡単に"類似画像"を発見できる!画像検索サイト7選

Thumb

いくらでも持っておきたい!無料のパターン素材116選

Thumb

もう1人の自分となるAIアシスタント。チャットボットから見えてくるプラットフォーマーたちの人工知能戦略

Thumb

オシャレ装飾で見出しに存在感を!CSSで簡単に作れる見出しデザイン41選

Thumb

国の統計を自由にグラフ化!総務省の「統計ダッシュボード」を使いこなそう

コンテンツ

トレンドを知る

  • ノウハウ&トレンド ニュース
  • リリース ニュース
    - ferret×PR TIMES -
  • マーケター特集
    - マーケティングジャーニー -
  • おすすめツールソリューション情報
    - by Marketer's STORE -
  • マーケターのキャリアとは
    - ferret × マイナビ転職 -

体系的に学ぶ

  • 基礎〜応用を学ぶ
    - カリキュラム -
  • コンテンツマーケティングを学ぶ
  • Googleアナリティクスガイド
  • 事例
  • セミナー
  • 資料ダウンロード
  • マーケティング用語辞典

実践ツール

  • 誰でもホームページ作成/運用ができる
    - ferret One -
  • 1文字0.8円〜!
    - ferret コンテンツライティング -
  • ソリューション紹介メディア
    - Marketer's STORE -
  • ferretのノウハウを公開
    - オウンドメディア運用・構築支援 -
  • Instagram分析ツール
    - ナビスタ -

Info

  • ferretとは
  • 運営会社
  • メンバー紹介
  • 著者一覧
  • お問い合せ
  • 広告掲載について
  • 利用規約
  • プライバシーポリシー
  • 特定商取引法に基づく表示

Sponsored

全世界4,500社が導入する  A/Bテストツール。

全世界4,500社が導入する「A/Bテストツール」

マケスト

忙しい担当者でも「楽に」顧客に「届く」メール配信システム

マケスト

高い利便性と強固なセキュリティを兼ね備え、 驚くほど簡単な操作性を実現した全方位型CMS

おすすめ記事

Thumb

CSSでプログラミング?圧倒的にデザインが便利になる「CSSカスタムプロパティ」入門

Thumb

Macの画面共有とリモートマネージメントの違いを知ってMacをより使いこなそう!

Thumb

レポート作成を爆速に!広告運用業務の負担を一気に削減する「アドレポ」とは?

Thumb

天気予報から売れる商品を予測しよう!初心者でもわかるウェザーマーチャンダイジングの基本を解説

Thumb

『配配メール』忙しい担当者でも「楽に」顧客に「届く」メール配信を実現するメールマーケティングシステム

エントリー

  • 新着
  • ランキング

トレンドを知る

  • ノウハウ&トレンド ニュース
  • リリース ニュース
    - ferret×PR TIMES -
  • マーケター特集
    - マーケティングジャーニー -
  • おすすめツールソリューション情報
    - by Marketer's STORE -
  • マーケターのキャリアとは
    - ferret × マイナビ転職 -

体系的に学ぶ

  • 基礎〜応用を学ぶ
    - カリキュラム -
  • コンテンツマーケティングを学ぶ
  • Googleアナリティクスガイド
  • 事例
  • セミナー
  • 資料ダウンロード
  • マーケティング用語辞典

実践ツール

  • 誰でもホームページ作成/運用ができる
    - ferret One -
  • 1文字0.8円〜!
    - ferret コンテンツライティング -
  • ソリューション紹介メディア
    - Marketer's STORE -
  • ferretのノウハウを公開
    - オウンドメディア運用・構築支援 -
  • Instagram分析ツール
    - ナビスタ -
  • ferretとは
  • 運営会社
  • メンバー紹介
  • 著者一覧
  • お問い合せ
  • 広告掲載について
  • 利用規約
  • プライバシーポリシー
  • 特定商取引法に基づく表示
Logo whiteWebマーケティングに
強くなるメディア

© 2016 basic Incorporated.

過去10年間で弊社が得てきたWebマーケティングのノウハウを

1冊の資料にまとめました。(全83ページ)