CSSと猫が大好きです
@tonkotsuboy_com
新しいCSSを学ぶメリットとは?
of S構文
of S
2番目の.item 要素「ぶどう」にスタイルをあてるには?
.item
<ul> <li>りんご</li> <li class="item">桃</li> <!-- ぶどうにスタイルをあてたい --> <li class="item">ぶどう</li> </ul>
https://codepen.io/tonkotsuboy/pen/yLWpmBm
.item:nth-child(2)
<ul> <li>りんご</li> <!-- 桃にスタイルがあたってしまう --> <li class="item">桃</li> <li class="item">ぶどう</li> </ul>
:nth-child(2 of .item)
<ul> <li>りんご</li> <li class="item">桃</li> <!-- ぶどうにスタイルがあたる --> <li class="item">ぶどう</li> </ul>
非表示の行には、JavaScriptで hidden 属性が付与される
hidden
https://codepen.io/tonkotsuboy/pen/YzbeERN
:nth-child(even of :not(:hidden))
<tbody> <tr data-type="女の子" hidden></tr> <tr data-type="男の子"></tr> <tr data-type="女の子" hidden></tr> <tr data-type="女の子" hidden></tr> <tr data-type="男の子"></tr>
tr:nth-child(even of :not([hidden])) { background: #efeeee; }
https://caniuse.com/css-nth-child-of より。緑色が対応済みバージョン
input
required
https://codepen.io/tonkotsuboy/pen/jOoZaQe
input:invalid
ページを開いた瞬間に背景が赤色になる
<input required />
input:invalid { background-color: red; }
input:user-invalid
1回目の入力が終わったら背景が赤色になる
input:user-invalid { background-color: red; }
:not(:focus)
:user-invalid:not(:focus)
:focus
:not()
input:user-invalid:not(:focus) { background-color: red; }
:user-invalid
https://caniuse.com/mdn-css_selectors_user-invalid より。緑色が対応済みバージョン
:has()
<div class="item"> <!-- 背景を変えたい --> <label>氏名</label> <input required /> <!-- 不正になりうる --> </div>
label
子孫要素に input:user-invalidがある.item要素の 背景の色を変える
.item:has(input:user-invalid) { background: #ffe5e5; }
https://caniuse.com/css-has より。緑色が対応済みバージョン
.container { .child { color: red; } }
https://codepen.io/tonkotsuboy/pen/ExRbPgV
.container { .child1, .child2 { color: red; } }
.link { &:hover, &:active { color: red; } }
.box { color: blue; @media (width <= 800px) { color: red; } }
&
Before
section { & h1 { color: red; } }
After
section { h1 { color: red; } }
ネストの緩和された構文の更新 https://developer.chrome.com/blog/css-nesting-relaxed-syntax-update?hl=ja
次のコードは動作しない。 筆者は歓迎だが、皆さんはどうですか?
/* 動きません */ .foo { &__bar { color: red; } }
https://caniuse.com/css-nesting より。緑色が対応済みバージョン黄色は要素セレクターの前に & が必要なバージョン
<main> <div class="item"> <label>氏名</label> <input /> </div> <div class="item"> <label>会社</label> <input /> </div> <!-- 中略 --> <button>送信する</button> </main>
.item { display: flex; }
main { display: grid; grid-template-columns: max-content 1fr; } main .item { display: grid; grid-template-columns: subgrid; grid-column: span 2; }
https://codepen.io/tonkotsuboy/pen/VwqmzeJ
https://codepen.io/brianhaferkamp/pen/XWXEbPp
https://caniuse.com/css-subgrid より。緑色が対応済みバージョン
コンテナクエリ @container が全ブラウザ対応。新時代のレスポンシブ対応を完全理解する by @tonkotsuboy_com - Zenn
CSS・TypeScriptの相性が抜群。vanilla-extractが最高のCSS開発体験をくれた by @tonkotsuboy_com - Zenn
アウトプットこそ最高のインプット。鹿野壮が語る「自分が一番トクする」アウトプットの力 -レバテックLAB
:nth-child()
:user-valid
@media