di: Cesare Lamanna 19 Giugno 2006
Proseguiamo sulla linea dello scorso appuntamento dedicato al Menu a comparsa con un altro esempio che, a prescindere dall'utilità pratica, ci consente ancora una volta di soffermarci sui principi alla base del cosidetto Javascript non intrusivo, quello che, tenendo separati i livelli della struttura (HTML), della presentazione (CSS) e dell'interattività (Javascript), tenta di coniugare l'aggiunta di effetti dinamici e di interazioni complesse con l'accessibilità. Gli effetti e le funzionalità fornite da JS, infatti, vengono applicate solo quando il supporto Javascript nel browser sia presente, senza però sacrificare la fruizione dei contenuti se tale supporto non è disponibile.
Un'eccellente risorsa sull'argomento è la traduzione in italiano del Corso di Javascript non intrusivo di Chris Heilmann. Ad essa rimando per tutti gli approfondimenti del caso.
Proprio di Chris Heilmann è lo script di cui ci occupiamo. Si tratta di DomNews, versione rivista e corretta di un classico dei tempi d'oro del cosiddetto DHTML: uno scroller di news. Subito i link essenziali:
La parte HTML è delle più semplici. Codice pulito e semantico:
<div id="news">
<ul>
<li>News</li>
<li><a href="http://www.html.it">Inventato il linguaggio HTML</a></li>
<li>CSS is cool!</li>
<li>Ti piace Javascript?</li>
<li>I Love DHTML</li>
</ul>
</div>
Un div con id="news" racchiude una lista non ordinata con dei link. Tutto qui. Attenzione a mantenere l'id="news" perché serve come riferimento allo script.
Il CSS che gestisce la presentazione e l'aspetto del box presenta tre regole fondamentali su cui è utile soffermarsi:
#news
{
width:190px;
background:#eee;
}
Questa regola definisce l'aspetto del box (<div id="news">) quando Javascript non è disponibile. Deve essere impostata una larghezza esplicita tramite la proprietà width (width: 190px).
#news.hasJS
{
height:120px;
overflow:hidden;
position:relative;
}
Questa regola, invece, si applica al box quando esiste il supporto di Javascript nel browser. Lo script provvede ad aggiungere dinamicamente una classe .hasJs. In questa regola, è fondamentale notare che il box viene posizionato relativamente (position:relative;) e che la proprietà overflow va impostata sul valore hidden. È anche possibile fissare l'altezza con la proprietà height.
#news.hasJS ul
{
position:absolute;
top:120px;
left:0;
margin:0 .5em 0 .5em;
padding:0;
}
Quest'ultima regola definisce le proprietà della lista (<ul>) quando Javascript è supportato. Il posizionamento deve essere assoluto (position:absolute;), il valore della proprietà top deve coincidere con il valore della proprietà height definita per il box.
Tutto il resto del foglio di stile si può personalizzare a piacere scegliendo i colori e i font adatti al proprio sito.
Lo script che gestisce lo scroller viene inserito nel modo consueto. Il resto lo fa tutto lui:
<script type="text/javascript" src="domnews.js"></script>
All'inizio del codice si trova una serie di variabili che definiscono alcuni aspetti fondamentali del funzionamento. Nel JS allegato sono stete commentate in italiano per consentire una facile personalizzazione. Ci soffermiamo qui solo su una:
var dn_stopMessage='Ferma lo scroller';
Visualizzando la demo, avrete di certo notato che lo scroller è accompagnato da un link che consente di fermare lo scorrimento delle news. È una buona norma di usabilità lasciare all'utente il controllo su questi aspetti, per cui va bene lasciarlo sempre. La variabile vista qui sopra consente di personalizzare il testo del link.
Guida Node.jsIl framework che permette di per usare V8, l'interprete JavaScript... |
Canvas, guida ai frameworkCanvas, tra gli elementi di HTML5 è forse quello di maggior impatto.... |
Guida jQuery UICreare siti ricchi e dinamici con jQuery UI, il progetto ufficiale... |
Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.
Iscriviti alla newsletter
|
|
Corso Webmaster base18 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso JQuery e Ajax per Webmaster03 Luglio 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |
|
|
Corso Webmaster base11 Giugno 2012 a Roma |