OrizzontHash
Stamattina mi sono svegliato con uno strano dubbio geometrico: quale termine si utilizza per indicare lo scambio delle coordinate x e y di un piano cartesiano?
Non avviene una traslazione ma…Uhm, non ricordo. E’ comunque quello che ho pensato di fare modificando il Tiny Scrolling per l’utilizzo in quei particolari layout che prevedono uno scrolling in orizzontale: forse ricordete questo vecchio post.
Dopo un brainstorming di sei ore con il mio team di comunicazione, la versione ha preso il nome di “Horizontal Tiny Scrolling”. (il coniglio Gegio aveva proposto all’inizio “Il lungo cammino verso l’Est”, soluzione valida per le prime due ore e quaranta)
Non starò a tediarvi come durante lo scorso post, anche perchè il funzionamento dello scrolling morbido è sempre riassumibile in un paio di righe: lo script cerca nella pagina un link interno (con un ‘#’), controlla la posizione della meta da raggiungere e fa uno scroll verso di questa ad una velocità variabile, in sostituzione del consueto disorientante salto diretto.
Questa volta naturalmente il movimento sarà da sinistra verso destra, e viceversa.
Come vedete nell’esempio online, per una “pagina tipo” ho disposto i paragrafi uno accanto all’altro applicandogli la proprietà float; al click di uno dei link interno lo scroll farà bloccare il paragrafo richiesto in corrispondenza dell’estremità sinistra della pagina. (si potrebbe aggiungere l’illuminazione temporanea dell’elemento interessato tramite la Fade Anithing Technique).
L’altezza del container, 509px, è quella che ho calcolato massima per evitare il comparire della barra di sinistra che complicherebbe ulteriormente l’usabilità. Il contesto è quello di un browser la cui altezza della pagina è limitata dalla presenza in contemporanea, ad esempio, di una web developer toolbar, una barra dei bookmark, ed un’altra toolbar come la Google- o la MozBlogBar.
Oltre al diverso funzionamento dello “scrollTo” le funzioni non riguardano più posizione Y relativa, altezza di pagina e finestra, ma naturalmente posizione X e larghezze. (vedi qui)
Un piccolo extra che ho aggiunto è lo scrolling della pagina tramite il mouse (come una normale pagina verticale) che sfrutta il movimento della rotellina come evento DOM. Queste ultime due funzioni (non l’intero script) sono riconosciute esclusivamente sui Mozilla (evento XUL) ed Explorer (evento proprietario) quindi non su Opera (e credo Safari).
function MouseScrollInit(){
if (window.addEventListener ) {
window.addEventListener("DOMMouseScroll", MouseScroll, false);
} else document.attachEvent("onmousewheel", MouseScroll);
}
function MouseScroll(e) {
if (!e) var e = window.event;
if (e.wheelDelta <= 0 || e.detail>=0){
window.scrollBy(80,0);
} else window.scrollBy(-80,0) ;
}
Vedremo di esplorare più in dettaglio il piccolo mondo dei layout orizzontali in qualche post futuro, intanto ecco i file da scaricare:
- script (.js)
- script con esempio (.zip)
Andando sull’ultimo paragrafo non rallenta, come invece faceva quello verticale.
Per ora ho tolto quell’opzione perchè c’è un problema nel riconoscimento della larghezza del body in Firefox: è di default al massimo uguale alla larghezza della finestra. Si potrebbe fissare questa larghezza tramite il CSS, ma non mi sembra logico considerando che la pagina varierà dinamicamente.
Ciao usando il tuo script v0.8 mi viene fuori errore nella riga 147 sia su firefox 3.5 che su explorer 6
Lo script funziona ma da questi errori che sono abbastanza fastidiosi.
Su firefox :
Errore: obj is null
File sorgente: http://…/js/thw.js
Riga: 147
Su ie
IE7:
linea 148
carattere 2
errore Necessario oggetto
codice 0
Si può fare qualcosa?
Grazie
PS complimentii per lo script cercavo da tempo una cosa simile.
Ciao io stavo cercando di modificare lo scroll solo che ho notato dei seri problemi con internet explorer e opera. Praticamente lo scroll va lentissimo. Come posso fixare questa cosa?! Sono alle prime armi con js e vi sarei molto grati se mi riusciste a darmi una mano