CSS - if()
目次
概要
| 形式 | if([ <if-branch> ; ]* <if-branch> ;?) |
|---|---|
| 詳細 | <if-branch> = <if-condition> : <value>? <if-condition> = style( style-conditions ) | media( media-conditions ) | supports( supports-conditions ) | else |
| サポート | https://caniuse.com/mdn-css_types_if |
説明
CSS の中で if 文を使用できる機能です。Chrome 137 でサポートされました。
style()
下記の例は、背景色は --mode の値が dark であれば黒、さもなくば白に、文字色は --mode の値が dark であれば白、さもなくば黒に指定します。
CSS
.dark {
--mode: dark;
}
.light {
--mode: light;
}
div:is(.dark, .light) {
padding: 8px;
background-color: if(style(--mode: dark): black; else: white);
color: if(style(--mode: dark): white; else: black);
}
HTML
<div class="dark">Dark mode</div> <div class="light">Light mode</div>
表示
Dark mode
Light mode
media()
@media によるメディアクエリと同様の判断を行います。下記の例では、ブラウザの横幅が 768px より狭いときはブロックレイアウト(縦並び)を、さもなくばフレックスレイアウト(横並び)を指定しています。
CSS
.my-container {
display: if(media(width < 768px): block; else: flex);
& > div {
flex: 1;
border: 1px solid #ccc;
text-align: center;
}
}
HTML
<div class="my-container"> <div>AAA</div> <div>BBB</div> <div>CCC</div> </div>
表示
AAA
BBB
CCC
supports()
指定したCSSをブラウザがサポートしているか否かを判断します。Chrome 137 でもまだサポートされていないようです。@supports を用いることで機能としては代替できます。
CSS
.grid {
display: if(supports(display: grid): grid; else: block;);
}
else
else は前述の条件のいずれにもマッチしなかった時の値を指定します。
CSS
.my-container {
display: if(media(width < 768px): block; else: flex);
}
複数条件
下記の様に複数の条件を記述することもできます。
CSS
.my-test {
color: if(
style(--mode: cool): blue;
style(--mode: hot): red;
style(--mode: eco): green;
else: black;
);
}
and, or, not条件
下記の様に and, or, not を用いた条件文を記述することもできます。
CSS
.my-test {
color: if(style((--mode: hot) or (--mode: fire)): red; else: black);
}
リンク
Copyright (C) 2025 杜甫々
初版:2025年5月25日、最終更新:2025年5月25日
http://www.tohoho-web.com/css/func/if.htm