jQuery: scrolling dei box con il contenuto

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.

Torna su