Wall image portfolio

Questo vi piacerà

Oggi imparerai a creare un’animazione a scorrimento delle immagini , le immagini scorreranno come per scorrere dall’alto verso il basso o dall’opposto. È inoltre possibile inserire collegamenti alle immagini per reindirizzare gli utenti alla destinazione scelta. 

Anteprima

Prima di condividere il codice sorgente , parliamone. Innanzitutto ricevo immagini casuali da picsum.photos , puoi chiamare questo lorem ipsum delle foto. È possibile ottenere facilmente foto fittizie e casuali.

HTML

<!DOCTYPE html>

<html>

<head>
  <meta charset="UTF-8">
  <title>Animated Scrolling Images </title>
      <link rel="stylesheet" href="style.css">
	
</head>

<body>

  <div class="main">
	  
	<div class="single-column">
		<a href="#"><img src="https://picsum.photos/300/300?random=1" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=2" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=3" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=4" alt="image"></a>
	</div>
	<div class="single-column">
		<a href="#"><img src="https://picsum.photos/300/300?random=5" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=6" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=7" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=8" alt="image"></a>
	</div>
	<div class="single-column">
		<a href="#"><img src="https://picsum.photos/300/300?random=9" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=10" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=11" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=12" alt="image"></a>
	</div>
	<div class="single-column">
		<a href="#"><img src="https://picsum.photos/300/300?random=13" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=14" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=15" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=16" alt="image"></a>
	</div>
	<div class="single-column">
		<a href="#"><img src="https://picsum.photos/300/300?random=17" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=18" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=19" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=20" alt="image"></a>
	</div>
	<div class="single-column">
		<a href="#"><img src="https://picsum.photos/300/300?random=21" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=22" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=23" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=24" alt="image"></a>
	</div>
	<div class="single-column">
		<a href="#"><img src="https://picsum.photos/300/300?random=25" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=26" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=27" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=28" alt="image"></a>
	</div>
	<div class="single-column">
		<a href="#"><img src="https://picsum.photos/300/300?random=29" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=30" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=31" alt="image"></a>
		<a href="#"><img src="https://picsum.photos/300/300?random=32" alt="image"></a>
	</div>
</div>
  
    <script  src="function.js"></script>

</body>
</html>

CSS


body {
  margin: 0;
  padding: 0;
  min-height: 100vh;
  display: grid;
  place-items: center;
}

.main {
  display: flex;
  overflow: hidden;
  height: 50vw;
  background: #333;
}

.main img {
  max-width: 100%;
  vertical-align: middle;
  border: 2px solid white;
  box-sizing: border-box;
  transition: opacity .2s;
}

.main:hover img {
  opacity: 0.5;
}

.main img:hover {
  opacity: 1;
}

.main .single-column {
	animation: var(--animation, none) 16s infinite linear;
}

.main .single-column:hover {
	animation-play-state: paused;
}

.main .single-column:nth-of-type(odd) {
  align-self: flex-end;
  --direction: 50%;
}

@keyframes slide {
  to {
    -webkit-transform: translateY(var(--direction, -50%));
            transform: translateY(var(--direction, -50%));
  }
}

Javascript


[...document.querySelectorAll('.single-column')].map(column => {
	column.style.setProperty('--animation', 'slide');
	column.style.setProperty('height', '200%');
	column.innerHTML = column.innerHTML + column.innerHTML;
});