Possiamo gestire lo scrolling dei box e creare l'effetto di un box che scrolla con il resto del contenuto utilizzando l'evento scroll()
e il metodo scrollTop()
di jQuery. Vediamo come.
Abbiamo la seguente marcatura:
<div id="content">
<div id="main">...</div>
<div id="content-sub">...</div>
</div>
Vogliamo che il box content-sub
si sposti in verticale seguendo lo scrolling della pagina. Diamo alcuni stili CSS:
html, body {
margin: 0;
padding: 0;
}
body {
background: #fff;
color: #333;
font: 90% Arial, sans-serif;
padding: 2em 0;
}
#content {
padding: 2em 0;
width: 50%;
margin: 0 auto;
overflow: hidden;
}
#main {
float: left;
width: 50%;
padding-right: 1em;
}
#main p {
line-height: 1.3;
margin-top: 0;
}
#content-sub {
float: left;
width: 189px;
background: #0084e4;
border-radius: 10px;
padding-top: 20px;
position: relative;
}
#content-sub ul {
margin: 0;
padding: 0 0 20px 0;
list-style: none;
height: 100%;
}
#content-sub ul li {
display: block;
width: 85%;
margin: 0 auto 4px auto;
}
#content-sub ul li a {
color: #fff;
}
Ed ecco il codice jQuery:
$(function() {
$(window).scroll(function() {
$('#content-sub').stop(true, true).
animate({
top: $(window).scrollTop()
}, 'slow', 'linear');
});
});
Per poter funzionare, l'evento scroll()
e il metodo scrollTop()
devono essere applicati alla finestra del browser, ossia all'oggetto window
. Potete visionare l'esempio finale in questa pagina.