Benvenuti a tutti in questo mio primo tutorial! Oggi vi propongo un menu di navigazione costituito da delle card che ruotano con un bellissimo effetto 3D.
Cliccando su questa pagina preview è possibile visualizzare una demo del progetto.
1. Caricamento delle risorse esterne
All’interno dell’head del nostro documento HTML inserire gli opportuni tag che consentono di caricare un foglio di stile CSS (styles.css) e javascript (code.js).
1 2 3 4 5 |
<head> <title>3D Menu Cards</title> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src="code.js"></script> </head> |
2. Creazione di una “Card”
Quella che ho denominato “card” è un div che contiene un fronte (front) e un retro (back). All’interno del div con classe back ho inserito del testo e un area per i link.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<div class="container"> <div class="card"> <div class="front" style="background-image:url(img/1.jpg)"> <!- Questo div conterrà il fronte della card -!> <h3>Coniglio</h3> </div> <div class="back"> <!- Questo div conterrà il retro della card -!> <h3>Un dolce coniglio</h3> <p>Questo è un dolce coniglio in mezzo alla neve</p> <nav> <a href="#">Link</a> </nav> </div> </div> </div> |
(Ovviamente le cards possono essere più d’una, è sufficiente aggiungere nuovamente un div container e sostituire i contenuti)
Attenzione: Le immagini (per questioni di ordine!) sono state inserite all’interno della cartella “img/”
3. Il documento CSS (styles.css)
In questo documento sono contenute tutte le formattazioni grafiche delle card, i colori dei testi, gli sfondi e gli effetti di rotazione.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
body{ font-family: "Trebuchet MS", Helvetica, sans-serif; background: rgb(21, 34, 47); } .container { display: inline-block; transform: rotateY(0deg); perspective: 500px; margin: 2em; } .container:hover .card, .container.hover .card{ transform: rotateY(180deg); } /* Qui è possibile modificare le dimensioni delle cards */ .container, .front, .back{ width: 300px; height: 500px; } .card{ position: relative; display: block; transition: 1s; transform-style: preserve-3d; } .front, .back { backface-visibility: hidden; position: absolute; top: 0; left: 0; box-sizing: border-box; } .front { z-index: 2; transform: rotateY(0deg); background-size: cover; } .front h3{ background: rgba(0,0,0,0.5); color: #fff; text-align: center; padding: .5em; } .back { padding: 1em; transform: rotateY(180deg); background: #eee; } nav{ display: block; padding: 2em; margin: 0; } nav a{ display: block; list-style: none; background: #aaa; color: #fff; font-size: 1.5em; margin-top: .5em; padding: .5em; text-align: center; } nav a:hover{ background: #333; } |
4. Il documento JavaScript (code.js)
Il seguente codice JavaScript ci permette di attivare l’effetto sui device mobili.
1 2 3 4 5 6 7 8 9 |
window.addEventListener("load", function(){ var containers = document.querySelectorAll(".container"); for(var i=0; i<containers.length; i++){ containers[i].addEventListener("touchstart", function(){ this.classList.toggle('hover'); }) } }); |
Per scaricare il demo di questo progetto clicca sul seguente link: Archivio Zip del progetto