2010-02-22 11 views
6

Sto provando ad avere un elenco di immagini visualizzate orizzontalmente. È un po 'come un carousel tranne che invece di utilizzare jQuery e animazioni che avevo appena avuto una barra di scorrimentoCome impedire che le immagini/i blocchi si avvolgano?

<div class="playlist-wrapper"> 
    <ul class="playlist"> 
    <li> <img src='http://blah' /></li> 
    <li> <img src='http://blah' /></li> 
    <li> <img src='http://blah' /></li> 
    <li> <img src='http://blah' /></li> 
    </ul> 
</div> 

.playlist-wrapper{width: 500px; overflow-x:scroll} 
ul{width: 10000px;} 
li{float:left} 

Il problema qui è che ho per definire la larghezza del tag UL, perché se non lo faccio le immagini andrò alla riga successiva e otterrò un rotolo Y che non voglio.

I non è possibile utilizzare jQuery. Ho provato no-wrap, ma funziona solo per il testo.

Qualche idea?

+0

stai caricando le immagini in modo dinamico? sono tutti della stessa taglia o di diverse dimensioni? – Pbirkoff

+0

@pbirkoff Ho il controllo sulla dimensione e _could_ lo imposto dinamicamente sul carico, ma preferirei non lo – marcgg

risposta

9
ul { 
    white-space: nowrap; 
} 

li { 
    display: inline; 
    /* or, for 'blockness': */ 
    display: inline-block; 
} 

Funziona nel mio FF3.6, ma non l'ho provato altrove. Inoltre, il contenuto di ul deve essere tutti elementi in linea (o creati per tale).

+0

dopo aver provato in realtà avevo bisogno di rimuovere il float (ho dimenticato di farlo). Questo sembra funzionare! – marcgg

+0

Questo è il mio file di test: http://jsbin.com/ikove. Se hai ancora il 'float: left' nel tuo foglio di stile, devi rimuoverlo. – Boldewyn

+0

A proposito: questa soluzione non funziona, se non si imposta un valore esplicito per la larghezza dell'ul. * Questo * è qualcosa che continuo a pensare a mal di testa. – Boldewyn

2

La definizione della larghezza è l'unica opzione per impedire il wrapping degli elementi li. Fidati di me, ho usato molte ore con lo stesso problema e sarei sorpreso se qualcuno potesse inventarmi qualcosa di meglio :)

Se non puoi usare JavaScript, forse puoi calcolare la larghezza su il lato server?

+0

E se non avessi usato l'intera struttura ul/li e non usassi qualcos'altro, pensi che ci sarebbe un andare in giro? – marcgg

+0

Non a mia conoscenza, ho paura. Spero che qualcuno mi dimostrerà che non sbaglio su questo argomento. –

+0

Posso calcolare la larghezza sul lato server, ma speravo in una soluzione più elegante ^^ – marcgg

0

Provare a non utilizzare la struttura ul/li e posizionare le immagini una dopo l'altra, che dovrebbe funzionare.

+0

Thx per la soluzione. Funziona, ma ho bisogno dei wrapper quindi non va bene per me – marcgg

2

basta sostituire

li {float:left} 

con

li {display:inline} 
Problemi correlati