検索

今回は、focus-withinの使い方について詳しく説明します。 注意点は何ですか?実際の事例を見てみましょう。

CSS の世界は本当に魔法の世界です。多くのフロントエンド開発者は、:focus については聞いたことがあるかもしれませんが、:focus-within については聞いたことがないかもしれません。では、:focus-within とは一体何でしょうか?この記事では、:focus-within について説明します。

:focus-within とは何ですか

CSS では: focus-within は疑似クラスであり、CSS セレクター (CSS レベル 4 セレクター) に含まれています。 :focus や :hover を知っているようなものです。 :focus-within はフォーカス状態を処理するのに非常に便利です。 :focus-within 擬似クラスを持つ要素は、要素自体またはその子孫の 1 つがフォーカスを持つ場合に有効です。

テキストがわかりにくい場合は、まず簡単な例を見てみましょう:

<p>
    <label>
        Your email:
    </label>
    <input>
</p>

上記は、入力フォーム コントロールを備えた単純なフォームです。

.form-group *:focus {
    background: yellow;
    color: #000;
}
.form-group {
    padding: 10px;
    border: 3px solid transparent
}
.form-group:focus-within {
    border-color: #000;
}

上記の例では、.form-group にフォーカスが移ると、border-color の色が #000 に変更されます。ただし、これはキーボード フォーカスを受け取ることを意味するものではありません。これは、

が必ずしもキーボード フォーカスを取得するとは限らず、tabindex が設定されていないためです。または、p のリンクまたは入力要素がフォーカスを受け取った場合、.form-group 要素は境界線の色を変更します。

上記の例を見て、すごいと思いませんか?以前は同様の効果を実現するには、JavaScript スクリプトを使用する必要がありました。 .form-group の子孫要素のマウスまたはキーボード イベントを通じて、対応するスタイルをその親要素 (または祖先要素) に追加します。

:focus-within の使用シナリオ

:focus-within は、主に、その要素のいずれかがフォーカスを取得したときに擬似クラスがアクティブ化されるため、非常に強力です。要素に多くのサブコンポーネントが含まれる場合、この疑似クラスは注意して使用してください。 :focus-within を使用すると、いくつかの一般的なインタラクティブな動作が非常にシンプルになり、特に以前は JavaScript キーボード イベントが必要だったインタラクティブな動作が、代わりに :focus-within を使用できるようになります。

次に、:focus-within の一般的な例をいくつか見てみましょう。

表の行の強調表示

一般的な例は、表の行の強調表示の動作です。つまり、表の行の上にマウスを置くと色が強調表示されます。この対話型スタイルは、視覚障害のあるユーザーが複雑な表や長いフォームを読みやすくするのに役立ちます。強調表示のおかげで、これらのユーザーは現在読んでいるテーブルの行をより簡単に追跡できます。過去によく実装されていた方法は、 :hover を使用してテーブルの行のスタイルを変更することでした。この解決策は通常のユーザーにとっては簡単な作業ですが、ユーザーがマウスを操作するのが難しい場合は、:hover を使用するのは少し面倒です。完璧を求める場合は、JavaScript キーボード イベントを介してテーブルの行にスタイルを追加することもできます。

つまり、:focus-within を使用すると、JavaScript に別れを告げることができます。次のようにスタイルを設定できます:

上の例は、:focus-within を使用してテーブルの行全体を強調表示する方法を示しています。テーブルの特定の行にフォーカスを取得できる要素がある場合、これはキーボードを介してフォーカスを取得することを指します。たとえば、上の例では、テーブルに 要素があります。a 要素はキーボードを通じてフォーカスを取得できます。

現時点では、スタイルを追加するだけです:

tbody tr:focus-within,
tbody tr:hover {
    background: rgba(lightBlue, .4);
}

ドロップダウン メニュー ドロップダウン メニューは、最も一般的な Web コンポーネントの 1 つです。私が最初に :focus-within 擬似クラスを見たとき、最初に頭に浮かんだ使用例はドロップダウン メニューでした。

上記の例では、ナビゲーション ドロップダウン メニューでユーザーのキーボード フォーカスを追跡するために JavaScript が使用されています。キーボードのフォーカスがリンク上にあることが JavaScript によって検出された場合は、.has-focus クラスを .navlist_drop に追加します。 li に .has-focus クラスがある場合、その子要素が表示されます。つまり、ドロップダウン メニューが表示されます。

この効果を得るには、:focus-within を通じて JavaScript スクリプトの関数を直接置き換えることができます。 .navlistdrop.has-focus の代わりに .navlistdrop:focus-within を使用します。キーボードを操作してドロップダウン メニュー項目にフォーカスを移動すると、ドロップダウン メニューが表示されます。

.navlist a:focus + .navlistdrop,
.has-drop:hover .navlistdrop,
.navlistdrop:focus-within {
    opacity: 1;
    transform: translateY(0px);
    height: auto;
    z-index: 1;
}

オフスクリーンナビゲーション

オフスクリーン ナビゲーションはモバイル端末で一般的な効果です。次に、:focus-within を通じてこの効果を実現することもできます。詳細なコードについては、次の例を参照してください。

ブラウザの互換性

:focus-within 非常に興味深いものですが、多くの学生がその互換性を心配しています。 Caniuse を通じて、ブラウザーがそれをサポートしていることがわかります。

概要

:focus に精通していれば驚くことではありませんが、:focus-within を知っているということは、常に新しい CSS に注意を払っていることを意味します。に関連した特性。もちろん、このプロパティは CSS の世界を再び更新しましたが、これは本当に奇妙です。興味があれば、自分でデモを書いてみてはいかがでしょうか。この物件はきっと気に入っていただけるでしょう。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

css3テキストグラデーションアニメーション

css3で半円弧を作成

CSSでステッカーフッターレイアウトを使用する方法

以上がfocus-withinの使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
CSSグリッドとは何ですか?CSSグリッドとは何ですか?Apr 30, 2025 pm 03:21 PM

CSSグリッドは、複雑で応答性の高いWebレイアウトを作成するための強力なツールです。設計を簡素化し、アクセシビリティを向上させ、古い方法よりも多くの制御を提供します。

CSS Flexboxとは何ですか?CSS Flexboxとは何ですか?Apr 30, 2025 pm 03:20 PM

記事では、レスポンシブデザインにおけるスペースの効率的なアラインメントと分布のためのレイアウト方法であるCSS FlexBoxについて説明します。 FlexBoxの使用量を説明し、CSSグリッドと比較し、ブラウザのサポートを詳細に説明します。

CSSを使用してWebサイトを応答するにはどうすればよいですか?CSSを使用してWebサイトを応答するにはどうすればよいですか?Apr 30, 2025 pm 03:19 PM

この記事では、ビューポートメタタグ、柔軟なグリッド、流体メディア、メディアクエリ、相対ユニットなど、CSSを使用してレスポンシブWebサイトを作成するための手法について説明します。また、CSSグリッドとフレックスボックスを使用してカバーし、CSSフレームワークを推奨しています

CSSボックスサイズのプロパティは何をしますか?CSSボックスサイズのプロパティは何をしますか?Apr 30, 2025 pm 03:18 PM

この記事では、要素の寸法の計算方法を制御するCSSボックスサイズのプロパティについて説明します。コンテンツボックス、ボーダーボックス、パディングボックスなどの値と、レイアウト設計とフォームアライメントへの影響について説明します。

CSSを使用してアニメーション化するにはどうすればよいですか?CSSを使用してアニメーション化するにはどうすればよいですか?Apr 30, 2025 pm 03:17 PM

記事では、CSS、キープロパティ、およびJavaScriptとの組み合わせを使用してアニメーションの作成について説明します。主な問題は、ブラウザの互換性です。

CSSを使用してプロジェクトに3D変換を追加できますか?CSSを使用してプロジェクトに3D変換を追加できますか?Apr 30, 2025 pm 03:16 PM

記事では、3D変換、主要なプロパティ、ブラウザの互換性、およびWebプロジェクトのパフォーマンスに関する考慮事項にCSSを使用して説明します。

CSSに勾配を追加するにはどうすればよいですか?CSSに勾配を追加するにはどうすればよいですか?Apr 30, 2025 pm 03:15 PM

この記事では、CSSグラデーション(線形、放射状、繰り返し)を使用して、ウェブサイトのビジュアルを強化し、深さ、フォーカス、および現代の美学を追加します。

CSSの擬似要素とは何ですか?CSSの擬似要素とは何ですか?Apr 30, 2025 pm 03:14 PM

記事では、CSSの擬似要素、HTMLスタイリングの強化における使用、および擬似クラスとの違いについて説明します。実用的な例を提供します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。