Vai al contenuto
Esperimento

Galleria immagini in CSS

Passa il mouse su un’immagine: tutte le altre si ritraggono. Nessuna riga di JavaScript, solo il selettore :has().

HTML

<div class="image-gallery">
  <div><img src="…" alt="" /></div>
  <div><img src="…" alt="" /></div>
  <div><img src="…" alt="" /></div>
  <!-- … -->
</div>

CSS

.image-gallery {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  max-width: 36rem;
  margin-inline: auto;
}

.image-gallery div {
  position: relative;
  aspect-ratio: 1;
  overflow: hidden;
}

.image-gallery img {
  transition: scale 350ms ease, opacity 350ms linear;
}

/* Il contenitore reagisce all'hover di una qualsiasi immagine. */
.image-gallery:has(img:hover) img:not(:hover) {
  scale: 0.8;
  opacity: 0.5;
}