jQuery: perché a volte scrollLeft non funziona?

jQuery: perché a volte scrollLeft non funziona?

Il caso del metodo .scrollLeft() in jQuery è un tipico esempio di come i CSS influenzino questa libreria. Questo metodo se usato in scrittura serve a far scorrere il contenuto di un elemento verso una data posizione orizzontale. Perché a volte non funziona?

La proprietà CSS in questo caso coinvolta è la proprietà overflow. Per far funzionare il nostro metodo occorre che l'elemento discendente di un genitore abbia una larghezza maggiore del suo contenitore.

Infatti nei CSS lo scrolling ha luogo solo se i contenuti non possono essere visualizzati a causa delle dimensioni specificate per il contenitore. Questo forza il browser a dover fornire un meccanismo di scorrimento.

Con i CSS è spesso sufficiente specificare overflow: auto per visualizzare la barra di scorrimento. In questo caso il browser è costretto a fornire tale meccanismo perché altrimenti il contenuto in eccesso non sarebbe visibile.

In jQuery il discorso è leggermente diverso: il metodo .scrollLeft() va sempre applicato al genitore dell'elemento con larghezza maggiore a patto che questo elemento abbia a sua volta un genitore con la proprietà overflow impostata su un valore diverso da hidden.

Quindi se abbiamo degli stili come:

#outer {
  width: 400px;
  overflow: auto;
}
#inner {
  width: 400px;
  overflow: hidden;
}
#scroller {
  width: 1000px;
}

Il metodo .scrollLeft() andrà applicato all'elemento #inner, che è il diretto antenato dell'elemento il cui contenuto è in eccesso rispetto agli altri data la sua larghezza.

Notate come l'elemento esterno permetta questo risultato grazie al fatto che la sua proprietà overflow è impostata su auto.

Torna su