広告について。
サイト運営のため、Googleアドセンス
による広告があります。
Contents - 目次
CSSでも変数や関数が使えるように。
CSS変数やCSS関数によるプログラミング。
CSSでプログラミング。
CSSの生みの親であるHåkon Wium Lie(ホーコン・ウィウム・リー)氏はTwitterで、もともとCSSはプログラミング言語にしないようにしていた、と発言している。
そのような経緯もあったためか、長らくCSSは、変数や関数、演算などのプログラミング的な要素は取り入れられなかった。
しかしCSSが登場してすでに20年以上、2024年には30周年となる。
その間にWebサイトやデバイスの進化は進み、今ではプログラミングの機能は欠かせないものとなっている。

CSS変数。カスタムプロパティの使い方。
カスタムプロパティによる変数。
CSS変数。
プログラミングの世界ではお馴染みの「変数」がCSSで使えるようになっている。
基本的に:rootセレクタへ指定をする。後で変更したくなった場合、ここの変数の値だけを変えれば良く管理もしやすい。
変数名は「–」のハイフン2つから始まる半角英数字で、任意で決められる。
(※idやクラス名と同様に「-」(ハイフン)や「_」(アンダースコア)以外の記号や、数字から始まる名前は使えない。)
- –white: #fff;
 - –sans_serif: “ヒラギノ角ゴ Pro”, “Hiragino Kaku Gothic Pro”, sans-serif
 
例1)
色やフォントスタイルを変数(カスタムプロパティ)へ格納し、var()関数で呼び出す。
HTML
<div id="example">
 <p>テキスト</p>
</div><!--example-->
CSS
:root {
 --white: #fff;
 --black: #000;
 --orange: #f15d00;
 --sans_serif: "ヒラギノ角ゴ Pro", "Hiragino Kaku Gothic Pro", sans-serif;
 --serif: 游明朝, 游明朝体, 'Yu Mincho', YuMincho, serif;
}
#example {
 background: var(--orange);
}
#example p {
 color: var(--white);
 font-family: var(--sans_serif);
 text-align: center;
}
結果。
テキスト
calc()関数の使い方。
calc()による、四則演算。
CSSの「calc」関数で計算、四則演算ができる。(記号はすべて半角。)
- 足し算は「 + 」 (プラス)
 - 引き算は「 – 」 (マイナス)
 - 掛け算は「 * 」 (アスタリスク)
 - 割り算は「 / 」 (スラッシュ)
 
例2)
3カラムが簡単かつ、きっちりとできる。
HTML
<div id="example_02">
 <p>テキスト</p>
 <p>テキスト</p>
 <p>テキスト</p>
</div><!--example_02-->
CSS
従来の場合。下記のように三等分に指定しづらかった。
#example_02 p {
 width: 33%;
}
#example_02 p:last-child {
 width: 34%;
}
CSS
calc()関数の場合。簡単に三等分に指定できるようになった。
#example_02 {
 display: flex;
}
#example_02 p {
 width: calc(100% / 3);
 background: var(--orange);
 color: var(--white);
 text-align: center;
}
(※色は例1の:rootから取得。)
結果。
テキスト
テキスト
テキスト
counter()関数の使い方。
counter()による、ナンバリング(番号付け)。
CSSでナンバリングができる「counter」関数。
olでのナンバリングと違い、擬似要素のbeforeやafterを使い、contentプロパティで文字列を付けたりすることができる。
少々ややこしいが、概念を覚えて、後はコピペで慣れればなんとかなる。
- 親要素にcounter-resetを指定し、名前を付けて初期値を設定する。(「0」でリセット。)
 - 子要素に擬似要素(::before or ::after)を付け、counter-incrementでcounter-resetの名前と整数値を指定する。
 - counter-incrementの値は、「1」なら+1づつ増える。(「-1」なら-1づつ減る。)
 
例3)
テキストの前に、自動的にナンバリングされる「Chapter」と「.」を付ける。
HTML
<div id="example_03">
 <p>テキスト</p>
 <p>テキスト</p>
 <p>テキスト</p>
</div><!--example_03-->
CSS
contentプロパティで、文字列(Chapter)と、番号、ドット(.)を自動付与できる。
文字列と番号は、半角スペースで空ける。
#example_03 {
 counter-reset: number 0;
}
#example_03 p {
 background: var(--orange);
 padding: 5px 10px;
 color: var(--white);
}
#example_03 p::before {
 counter-increment: number 1;
 content: "Chapter " counter(number) ".";
 padding-right: 5px;
 font-weight: bold;
}
(※色は例1の:rootから取得。)
結果。
テキスト
テキスト
テキスト
attr()関数の使い方。
「attr」関数は、自分で決めたデータ属性、「data-」で始まる要素内の値を、contentプロパティで表示させることができる。
例4)
テキストの後に、自動的に文字列を付ける。
(※矢印は特殊文字を使用。)
HTML
<div id="example_04">
 <a href="/" date-link=" 詳しくはこちら⇒">テキスト</a>
 <a href="/" date-link=" 詳しくはこちら⇒">テキスト</a>
 <a href="/" date-link=" 詳しくはこちら⇒">テキスト</a>
</div><!--example_04-->
CSS
今回の例は::after擬似要素だけでも同じことができるが、attr()関数を使うとテキストの変更・修正がHTML側だけで可能となる。
#example_04 a {
 display: block;
 background: var(--orange);
 padding: 5px 10px;
 color: var(--white);
 transition: all 0.3s ease 0s;
}
#example_04 a:hover {
 opacity: 0.7;
 cursor: pointer;
}
#example_04 a::after {
 content: attr(date-link);
}
(※色は例1の:rootから取得。)
結果。
プログラミングの関数。
関数は、処理を自動化するためのコード。
デザイナーには、「関数」という概念は、なかなか取っ付きにくい。
よく、「自動販売機」に例えられるように、「自動化するためのコード」なので、作るまでは一仕事となる。
逆に考えると、作ってしまえば後が楽になる。
Illustratorのアピアランス、Photoshopのレイヤースタイルのような。
イラレで例えると「アピアランス」、フォトショでは「レイヤースタイル」のように、一度作ってしまえば使い回しがきくので、便利なものとなる。

以上、参考になれば幸いです。
※Webデザインは実務数年、職業訓練校講師数年、フリーランス数年、計15年以上のキャリアがありますが、一気にがぁっと書いているので「です・ます調」ではありません。(元々はメモ書きでした。) ※事実や経験、調査や検証を基にしていますが、万一なにかしら不備・不足などがありましたらすみません。お知らせいただければ訂正いたします。 ※写真は主にUnsplashやPixabayのフリー素材を利用させていただいております。その他の写真や動画もフリー素材やパブリックドメイン、もしくは自前のものを使用しております。
CSS 関連メモ。
- CSSの一部が効かないときは、キャッシュやダークモードが原因かも。
 - first-letterが効かないとき。覚えると便利なCSS擬似要素。
 - rgb()で透明度も。CSSの新しい色指定と使い方の例。
 - CSSでダークモード。prefers-color-schemeの使い方と効かないとき。
 - CSSで縦書き。writing-modeの使い方。効かないときは?
 - scroll-snap-typeの使い方。CSSでカルーセル。効かないときは?
 
- CSSのブレイクポイントの書き方。メディアクエリはいくつがおすすめ?
 - CSS gapの使い方?Flexboxでレスポンシブ?効かないときは?
 - CSSの変数と関数。覚えておくと便利なCSSプログラミング。
 - CSS aspect-ratioの使い方。効かないときはどうする?
 - text-overflowの使い方。CSSで文字数を制御。効かないときは?
 - detailsとsummaryの使い方。HTML&CSS or jQueryアコーディオン。
 - CSSブレンドモード。mix-blend-modeの例一覧。乗算やスクリーンを。
 - counter-incrementの使い方。CSSで連番。増えない時の対処。コピペOK。
 - CSS フォントサイズはどうする? remの基本かつ効果的な使い方。
 - line-clampの使い方。CSSで複数行指定。効かないときは?
 
- CSSの@whenと@else。新しいブレイクポイントの設定方法?
 - 縁取り文字はCSSのtext-strokeで可能。(非推奨の時代は終わり。)
 - CSS変数の使い方例。:rootを使ってカスタムプロパティを覚える。
 - CSSでフェードイン。JS不要、コピペ可。ちょっとリッチな雰囲気を。
 - CSS カラーコードで透明度を指定したいとき。(16進数6つ+2つで。)
 - CSS max-width レスポンシブ対応のピクセル指定は崩れる原因となる。
 - CSSのobject-fitの使い方。トリミングやサイズの実装例。
 - backgroundの複数指定が効かない時の確認事項。(CSSアニメーションとの組み合わせ。)
 - CSS filterで色変更。色相・彩度・明度? filterプロパティでできること。
 - CSS position: stickyの使い方。効かない!ときはここをチェック。
 
