ホームページ ウェブフロントエンド CSSチュートリアル 純粋なCSSギャラリーフォーカス効果:not

純粋なCSSギャラリーフォーカス効果:not

Mar 10, 2025 am 10:40 AM

A Pure CSS Gallery Focus Effect with :not

以前は、ホバリングされたものを除き、コンテナ内のすべての要素をスタイリングすることがよくあります。 これは通常、イベントとmouseenterおよびmouseleaveのクラスを追加または削除することを意味しました。機能的ですが、純粋なCSSソリューションが望ましいことがよくあります。 この記事では、Netflixのホームページなどのアニメーションの再現に使用される技術に最初に触発されたCSSのみのアプローチについて詳しく説明しています。 ただし、このメソッドを使用した以前の試みは、要素間のギャップのためにグリッドベースのレイアウトで失敗しました。 この記事では、これらのギャップをエレガントに処理するソリューションを紹介します。

マークアップとベースCSS

基礎HTMLは、グリッドベースのリストを使用します:

  • :コンテナグリッド。.grid
  • :個々のグリッド項目。.grid__child
マークアップは次のとおりです

最初のCSSはグリッドとその子供のスタイルをスタイルします:
ログイン後にコピー

これにより、アイテム間のギャップがある3列のグリッド(画面サイズに基づいて動的に調整)が作成されます。 CSSセレクターのレバレッジ
.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, 15rem);
  grid-gap: 1rem;
}

.grid__child {
  background: rgba(0, 0, 0, .1);
  border-radius: .5rem;
  aspect-ratio: 1/1;
}
ログイン後にコピー

コアインタラクションには、2つのステップが含まれます

コンテナのホバリングはすべての子供に影響します

ホバリングされた子供自体は除外されます。

  1. 最初に、容器がホバリングされているときにすべての子供をターゲットにします:
  2. 次に、不透明度を減らすために現在ホバリングされている子供を使用して除外します:

これは、要素間のギャップなしで完全に機能します。 ただし、ギャップを使用すると、カーソルがギャップ自体を超えている場合でも効果がトリガーされます。
.grid:hover .grid__child {
  /* ... */
}
ログイン後にコピー
ギャップへの対処

:not(:hover)ソリューションは、ポインターイベントの制御にあります。

コンテナに
.grid:hover .grid__child:not(:hover) {
  opacity: 0.3;
}
ログイン後にコピー
に設定し、その子供に

を設定することにより、子どもの要素を直接上回る場合にのみホバー効果がトリガーされ、ギャップを効果的に無視することを確認することにより。

スムーズな不透明な変更の遷移を追加すると、効果が完了します。 このソリューションを組み込んだ最終的なCSSは次のとおりです

潜在的な制限pointer-events: none .grid効果的ですが、このアプローチでは、スクロール可能な容器(水平スライダーなど)の調整が必要になる場合があります。 そのような場合、別の容器でpointer-events: autoを包むことは回避策になる可能性があります。

結論
.grid {
  /* ... */
  pointer-events: none;
}

.grid__child {
  /* ... */
  pointer-events: auto;
}
ログイン後にコピー

これは、共通の相互作用の課題のための強力な純粋なCSSソリューションを示しています。 高度なCSSセレクターとポインターイベントコントロールを活用することにより、JavaScriptに頼らずに洗練された効果を達成し、よりクリーンで保守可能なコードにつながります。 これは、CSSの能力の向上を強調し、JavaScriptの複雑さを追加する前にネイティブソリューションの探索を促進することを奨励しています。

以上が純粋なCSSギャラリーフォーカス効果:notの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Googleフォント変数フォント Googleフォント変数フォント Apr 09, 2025 am 10:42 AM

Google Fontsが新しいデザイン(ツイート)を展開したようです。最後の大きな再設計と比較して、これははるかに反復的です。違いをほとんど伝えることができません

HTML、CSS、JavaScriptを使用してアニメーションカウントダウンタイマーを作成する方法 HTML、CSS、JavaScriptを使用してアニメーションカウントダウンタイマーを作成する方法 Apr 11, 2025 am 11:29 AM

プロジェクトにカウントダウンタイマーが必要だったことはありますか?そのようなことのために、プラグインに手を伸ばすのは自然なことかもしれませんが、実際にはもっとたくさんあります

HTMLデータ属性ガイド HTMLデータ属性ガイド Apr 11, 2025 am 11:50 AM

HTML、CSS、およびJavaScriptのデータ属性について知りたいと思っていたことはすべて。

CSSを介してファーストクラスの名前アイテムを使用して子要素を選択する方法は? CSSを介してファーストクラスの名前アイテムを使用して子要素を選択する方法は? Apr 05, 2025 pm 11:24 PM

要素の数が固定されていない場合、CSSを介して指定されたクラス名の最初の子要素を選択する方法。 HTML構造を処理するとき、あなたはしばしば異なる要素に遭遇します...

フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? Apr 05, 2025 pm 05:51 PM

フレックスレイアウトの紫色のスラッシュ領域に関する質問フレックスレイアウトを使用すると、開発者ツールなどの混乱する現象に遭遇する可能性があります(D ...

SVGでタータンパターンを生成する静的サイトを作成する方法 SVGでタータンパターンを生成する静的サイトを作成する方法 Apr 09, 2025 am 11:29 AM

タータンは、スコットランド、特にファッショナブルなキルトに通常関連する模様のある布です。 Tartanify.comでは、5,000を超えるTartanを集めました

SASSをより速くするための概念の証明 SASSをより速くするための概念の証明 Apr 16, 2025 am 10:38 AM

新しいプロジェクトの開始時に、SASSコンピレーションは瞬く間に起こります。これは、特にbrowsersyncとペアになっている場合は素晴らしい気分です。

See all articles