現在使用できる、強力で安定した優れたツールバーです。
すべてのフロントエンド デベロッパーは、:has()
が単なる「親セレクタ」以上のものであることを知っておくべきだと思います。
subgrid
の使用方法とその理由、組み込みの CSS 構文を使用してネストする方法、
ブラウザ残高の見出しテキストのラップ、コンテナ クエリ ユニットの使用方法。
この投稿は すべてのフロントエンド デベロッパーが 2023 年に知っておくべき昨年の 6 つの CSS スニペット。
CSS:has(.potential-beyond-being-a-parent-selector)
:has()
対応ブラウザ
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
:has()
は 2023 年末にすべての主要なブラウザで利用されました。この新しいセレクタは
さまざまなユースケースに
驚くことでしょう
ゲーム、リアクティビティ、コンテンツ認識レイアウト、スマート コンポーネント、
Jhey によるこの記事で詳しく説明しています。
:has()
を親セレクタとして使用する例をいくつか示します。この名前の由来は
通常、セレクタの主語は ul li
のように最後に配置されます。ここで、li
は主語です。
スタイルを取得します:has()
を使用すると、セレクタの先頭の要素は次のようになる可能性があります。
できます。次の例の場合、内部に要素があるとボタンに隙間が生じます。
クラス .icon
を使用します。中に画像がある場合、カードの向きが変わります。
button:has(.icon) {
gap: 1ch;
}
.card:has(img) {
grid-auto-flow: row;
}
長く望まれるセレクタは、その中のアイテム数に基づいてレイアウトを変更することです。これが可能になりました
:has()
を使用します。これは、子の数をクエリしながらコンテナをサブジェクトとして保持できるためです。
main:has(> :nth-child(5)) {…}
もう 1 つの高度な例は、ドキュメント全体に設定されたスタイルを変更することです。 ページの特定のチェックボックスがオンの場合:
html:has(#dark-mode:checked) {…}
例を見るだけで、セレクタの主題は変わらない単純なユースケースです。
:has()
が親セレクタに限定されているように思われるかもしれません。次の点を考慮してください。
あります。これらは共通の祖先に基づいて何かを確認してから、セレクタをピボットします
ページの深い階層にある子が対象になります
この例では、いずれかの入力が無効な場合にフォームエラー要素が表示されています。
form:has(:user-invalid) .error {
display: block;
}
これは、サイド ナビゲーションに .--is-open
クラスがある場合に、メイン コンテンツ エリアをスライドアウトするものです。
html:has(#sidenav.--is-open) main {
translate: -320px;
}
:has()
を親セレクタとして使用し、:has()
と数量クエリを使用するデモを見てみましょう。
とコンテナクエリを使用して、見やすく表示可能なグリッド レイアウトを作成します。
縦向きまたは横向きで 1 ~ 12 個の要素:
サブグリッドを作成する
subgrid
対応ブラウザ
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
何年もの間、フロントエンドのウェブ コミュニティは、締めくくりと仕上げを支援するためにサブグリッドを必要としていました。 これは非常に人気があり強力な CSS グリッドレイアウトエンジンです 現在は、3 つの主要なエンジンすべてで利用できます。
概要を確認したい場合は、こちらでサブグリッドの詳細をご確認ください。
body {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(30ch, 1fr));
> article {
display: grid;
grid-row: span 4;
grid-template-rows: subgrid;
}
}
CSS の方法をネストする
nesting
対応ブラウザ
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
組み込みの CSS ネストは、2023 年にすべての主要なブラウザで利用できるようになりました。 ウェブサイトを更新して、ネストをコンパイルしたビルドプロセスを削除したところ、 小さくすることもできます。ネストしたスタイルシートはサイズが小さくなり それを表現する準備が整いました
CSS ネスト構文の概要については、 をご覧ください。構文の例を次のコード例に示します。
.you {
.can-totally-ship-this {
&.if-you-wanted {
/* it's VERY MUCH like SCSS */
&:is(:hover, :focus-visible) {
/* put a bird on it */
}
}
}
}
.for-theming {
@media (prefers-color-scheme: dark) {
/* you can nest media queries */
}
}
/* or for theming with [data-theme="dark"] */
.button {
background: black;
color: white;
/* nest and do more than just append, flip it and reverse it */
[data-theme="dark"] & {
background: white;
color: black;
}
}
ブラウザで広告見出しのバランスを調整
balance
対応ブラウザ
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
pretty
対応ブラウザ
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
text-wrap: balance
がない場合、デベロッパーとコピーライターは改行ヒントを利用できます。
たとえば <wbr>
要素や ­
などです。ほぼ負けの戦いです
コンテンツの翻訳、ズーム、変更が行われた場合、それらが
ラッピングヒントは、コンテンツの新しいプレゼンテーションに適した場所になります。
テキストの折り返しをバランスよく行うと、この作業をブラウザに任せることができます。 次の Codepen で比較を確認できます。
コンテナ クエリ単位を使用する
cqw
対応ブラウザ
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
昨年の投稿では、すべてのフロントエンド デベロッパーが 作成します。まだ学習していない方は、2024 年を成功の年にしましょう。 コンテナクエリユニットも確認します概要として 2021 年、Ahmad Shadeed はコンテナ クエリ ユニットに関する優れた記事を執筆しました。
6 つの新しいコンテナ クエリ ユニットがあります。
- インライン バリアント
cqi
。 - 幅のバリエーション
cqw
。 - ブロック バリアント
cqb
。 - 高さのバリエーション
cqh
。 cqmin
の長さのいずれか小さい方のバリエーション。cqmax
より大きい長さのバリアント。
コンテナに対する相対アニメーションと本質的アニメーションのシナリオを考えてみましょう。 子要素は、元のコンテナから完全にスライドアウトします。 コンテナのインラインサイズの 100% に相当します。
@keyframes slide-out-of-container {
to {
translate: -100cqi;
}
}
こちらは、コンテナ レスポンシブ タイポグラフィのカードと、 コンテナの向き。向きが横向きの場合はサイズが半分になります。
.card {
:is(h2,h3) {
font-size: clamp(1.5rem, 5cqi, 4rem);
}
img {
inline-size: 100cqi;
@container (orientation: landscape) {
inline-size: 50cqi;
}
}
}
これらのユニットを初めて使用する場合は、 2024 年にご利用いただけるすべてのユニットをご確認ください。