Saltare dal top al footer e viceversa in un click
Senza dilungarci troppo, perché stiamo parlando di questo? Perché, come avrete notato, ho fatto un restyling dei link interni che consentono di saltare direttamente al footer e di tornare in alto. Vediamo come si fa ad ottenere il mio stesso risultato.
HTML
Footer
▼
Dunque, creiamo due div, contenenti le scritte "Footer" e "Top" e con i due simboli Unicode ▼ e ▲. I div poi, li incapsuliamo dentro il tag a, in modo da usare come collegamento tutto il div, più facile da cliccare rispetto a del semplice testo. Per creare un link interno, basta indicare, nell'attributo href l'id della destinazione: in un caso sarà "footer" (href="#footer"), nell'altro sara "#" (href="#", cioè vuoto, il browser tornerà in alto).
Due note:
- Dobbiamo assicurarci che nel nostro sito/blog il footer abbia l'attributo id="footer", altrimenti la cosa non funge.
- Blogger, in fase di pubblicazione del post, interpreta i due id inserendo un riferimento assoluto, per questo il codice differisce leggermente da quello che ho scritto.
CSS
Per impostare posizione e aspetto ci affidiamo al css:div.anchor_mt { margin: auto; width:70px; height:35px;Tralasciando le piccolezze estetiche, vediamo giusto come definire il comportamento che ho scelto.
text-align:center;
padding:1px 3px 1px 3px;
background:#444444;
-moz-transition: all .3s ease-in-out;
-webkit-transition: all .3s ease-in-out;
-o-transition: all .3s ease-in-out;
transition: all .3s ease-in-out;
position:fixed;
display:block;
line-height:1.3;
z-index:90;
}
a.anchor_mt { color:white; text-decoration:none; font-weight:bold;}
a.anchor_mt:hover { color:#CCE8EE; }
div#top_mt { margin-top:0; top:-18px; left:50%;
margin-left:-35px;
border-bottom-left-radius:5px; border-bottom-right-radius:5px;
box-shadow:0px 2px 6px #999999;
}
div#top_mt:hover { top:0px;}
div#footer_mt { margin-bottom:0; bottom:-18px; left:50%;
margin-left:-35px;
border-top-left-radius:5px; border-top-right-radius:5px;
box-shadow:0px -2px 6px #999;
}
div#footer_mt:hover { bottom:0px;}
div della classe anchor_mt, cioè i div che costituiscono i nostri link interni:
- stanno in posizione fixed, cioè fissa, vale a dire tengono la loro posizione indipendentemente da tutto;
- hanno una dimensione fissa (width:70px; height:35px;) e asseconderanno gli eventi su di essi usando delle transizioni (righe dalla 7 alla 10).
- vengono sempre visualizzati davanti al contenuto della pagina (z-index:90);
div con id top_mt, cioè il div che sta nel bordo superiore della pagina:
- sta 18 pixel fuori dalla pagina (top:-18px;), tenendo a vista soltanto il simbolo ▼;
- è centrato (left:50%; margin-left:-35px;), i px di margine sinistro devono essere la metà della lunghezza (nel mio caso pari a 70px);
- sull'evento hover, cioè quando la freccina del mouse ci passa sopra, fa coincidere il suo bordo superiore con quello della pagina (top:0px;), abbassandosi e mostrando la scritta "Footer", che spiega a che serve quell'affare su cui l'utente ha sovrapposto il pointer del mouse.
div con id footer_mt, cioè il div che sta nel bordo superiore della pagina:
- analogo al precedente ma invertendo il comportamento.
Questo è grosso modo tutto, spero di essere riuscito a spiegarmi, ma in caso contrario, nei commenti potete chiedere tutti i chiarimenti del caso :)