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の使い方。効かない!ときはここをチェック。