Table des matières
Marquage et CSS de base
Tire en tirant des sélecteurs CSS
Additionner les lacunes
limitations potentielles
Conclusion
Maison interface Web tutoriel CSS Un effet de mise au point de la galerie CSS pure avec: pas

Un effet de mise au point de la galerie CSS pure avec: pas

Mar 10, 2025 am 10:40 AM

A Pure CSS Gallery Focus Effect with :not

Auparavant, styliser tous les éléments dans un conteneur, sauf celui qui planait, impliquait souvent JavaScript. Cela signifiait généralement ajouter ou supprimer des classes sur les événements mouseenter et mouseleave. Bien que fonctionnel, une solution CSS pure est souvent préférable. Cet article détaille une approche uniquement du CSS, initialement inspirée par les techniques utilisées pour recréer des animations comme la page d'accueil de Netflix. Cependant, une tentative précédente utilisant cette méthode a échoué sur une disposition basée sur la grille en raison des lacunes entre les éléments. Cet article présente une solution qui gère élégamment ces lacunes.

Marquage et CSS de base

Le HTML fondamental utilise une liste basée sur la grille:

  • .grid: la grille de conteneur.
  • .grid__child: éléments de grille individuels.

Le balisage est le suivant:

Copier après la connexion

Le CSS initial styles la grille et ses enfants:

.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;
}
Copier après la connexion

Cela crée une grille à trois colonnes (ajustant dynamiquement en fonction de la taille de l'écran) avec un écart entre les éléments.

Tire en tirant des sélecteurs CSS

L'interaction centrale implique deux étapes:

  1. Le plan de planage du conteneur affecte tous les enfants.
  2. L'enfant plané lui-même est exclu.

Tout d'abord, nous ciblons tous les enfants lorsque le récipient est plané:

.grid:hover .grid__child {
  /* ... */
}
Copier après la connexion

Ensuite, nous excluons l'enfant actuellement plané en utilisant :not(:hover) pour réduire l'opacité:

.grid:hover .grid__child:not(:hover) {
  opacity: 0.3;
}
Copier après la connexion

Cela fonctionne parfaitement sans lacunes entre les éléments. Cependant, avec les lacunes, l'effet se déclenche même lorsque le curseur est sur l'écart lui-même.

Additionner les lacunes

La solution réside dans le contrôle des événements du pointeur. En réglant pointer-events: none sur le conteneur .grid et pointer-events: auto sur ses enfants, nous nous assurons que l'effet de survol ne se déclenche directement sur un élément enfant, ignorant efficacement les lacunes.

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

.grid__child {
  /* ... */
  pointer-events: auto;
}
Copier après la connexion

L'ajout d'une transition pour les modifications d'opacité plus lisses termine l'effet.

Le CSS final incorporant cette solution est:

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, 15rem);
  grid-gap: 3rem;
  pointer-events: none;
}

.grid:hover .grid__child:not(:hover) {
  opacity: 0.3;
}

.grid__child {
  background: rgba(0, 0, 0, .1);
  border-radius: .5rem;
  aspect-ratio: 1/1;
  pointer-events: auto;
  transition: opacity 300ms;
}
Copier après la connexion

limitations potentielles

Bien que efficace, cette approche peut nécessiter des ajustements pour les conteneurs défiles (par exemple, les curseurs horizontaux). Dans de tels cas, envelopper le .grid dans un autre conteneur peut être une solution de contournement.

Conclusion

Cela démontre une puissante solution CSS pure pour un défi d'interaction commun. En tirant parti des sélecteurs CSS avancés et du contrôle des événements de pointeur, nous réalisons un effet sophistiqué sans recourir à JavaScript, conduisant à un code plus propre et plus maintenable. Cela met en évidence les capacités croissantes du CSS et encourage l'exploration de solutions natives avant d'ajouter la complexité JavaScript.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Dead Rails - Comment apprivoiser les loups
4 Il y a quelques semaines By DDD
Niveaux de force pour chaque ennemi et monstre de R.E.P.O.
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
<🎜>: Grow A Garden - Guide de mutation complet
2 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1655
14
Tutoriel PHP
1254
29
Tutoriel C#
1228
24
Fontes variables de polices Google Fontes variables de polices Google Apr 09, 2025 am 10:42 AM

Je vois que Google Fonts a déployé un nouveau design (tweet). Comparé à la dernière grande refonte, cela semble beaucoup plus itératif. Je peux à peine faire la différence

Comment créer un compte à rebours animé avec HTML, CSS et JavaScript Comment créer un compte à rebours animé avec HTML, CSS et JavaScript Apr 11, 2025 am 11:29 AM

Avez-vous déjà eu besoin d'un compte à rebours sur un projet? Pour quelque chose comme ça, il pourrait être naturel d'atteindre un plugin, mais c'est en fait beaucoup plus

Guide des attributs de données HTML Guide des attributs de données HTML Apr 11, 2025 am 11:50 AM

Tout ce que vous avez toujours voulu savoir sur les attributs de données dans HTML, CSS et JavaScript.

Comment sélectionner un élément enfant avec l'élément de nom de première classe via CSS? Comment sélectionner un élément enfant avec l'élément de nom de première classe via CSS? Apr 05, 2025 pm 11:24 PM

Lorsque le nombre d'éléments n'est pas fixé, comment sélectionner le premier élément enfant du nom de classe spécifié via CSS. Lors du traitement de la structure HTML, vous rencontrez souvent différents éléments ...

Pourquoi les zones réduites pourpre dans la disposition Flex sont-elles considérées à tort «espace de débordement»? Pourquoi les zones réduites pourpre dans la disposition Flex sont-elles considérées à tort «espace de débordement»? Apr 05, 2025 pm 05:51 PM

Questions sur les zones de slash violet dans les dispositions flexibles Lorsque vous utilisez des dispositions flexibles, vous pouvez rencontrer des phénomènes déroutants, comme dans les outils du développeur (D ...

Une preuve de concept pour rendre Sass plus rapidement Une preuve de concept pour rendre Sass plus rapidement Apr 16, 2025 am 10:38 AM

Au début d'un nouveau projet, la compilation SASS se produit en un clin d'œil. Cela se sent bien, surtout quand il est associé à BrowSersync, qui recharge

Comment nous avons créé un site statique qui génère des modèles tartan dans SVG Comment nous avons créé un site statique qui génère des modèles tartan dans SVG Apr 09, 2025 am 11:29 AM

Le tartan est un chiffon à motifs qui est généralement associé à l'Écosse, en particulier leurs kilts à la mode. Sur tartanify.com, nous avons rassemblé plus de 5 000 tartan

See all articles