2015-08-10 13 views
5

Ho una casella di riepilogo con molti elementi, alcuni dei quali con etichette lunghe. Pertanto, ho bisogno di scorrere orizzontalmente e verticalmente.Scroll orizzontale su ListBox HTML (non contenitore)?

Ho provato a mettere la casella di riepilogo in un div e ad applicare lo stile di overflow a entrambi, ma questo ha problemi. Lo scorrimento orizzontale sul div scorre la casella di riepilogo stessa, anziché il contenuto. Ad esempio, quando si scorre, finisco per vedere il bordo della casella di riepilogo con la barra di scorrimento. Il che porta al secondo problema; Ho bisogno di scorrere orizzontalmente per raggiungere la barra di scorrimento verticale della casella di riepilogo, poiché la barra di scorrimento verticale del div (se presente) può essere visualizzata all'interno della casella di riepilogo, piuttosto che nel suo contenuto.

Per avere un'idea di cosa sto parlando, try this jsFiddle in FireFox or IE (Chrome funziona bene).

Ecco il codice:

div { 
 
    height: 100px; 
 
    width: 300px; 
 
    overflow: auto; 
 
} 
 
select { 
 
    height: 200px; 
 
    overflow: visible; 
 
}
<div> 
 
    <select multiple> 
 
    <option>1 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>2 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>3 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>4 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>5 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>6 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>7 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>8 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>9 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>10 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>11 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>12 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>13 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>14 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>15 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>16 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>17 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>18 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>19 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>20 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    <option>21 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    </select> 
 
</div>

C'è un modo per ottenere le barre di scorrimento orizzontale e verticale su una casella di riepilogo che agiscono sul contenuto casella di riepilogo, e che funziona in Chrome, IE (non preoccuparti delle versioni precedenti), FireFox e Safari?

+0

quale risultato se messo 'overflow: -moz-barre di scorrimento-orizzontale; overflow-x: auto; 'nel tuo div? – ichadhr

+0

@ichadhr stessa cosa su IE e FireFox –

risposta

4

Impostare innanzitutto lo size attribute della selezione in modo che corrisponda al numero di opzioni. Quindi puoi aggiungere un altro div e usarlo per più o meno ritagliare la barra di scorrimento inutilizzata.

Working Example

.wrap { 
 
    height: 100px; 
 
    width: 300px; 
 
    overflow: auto; 
 
} 
 
.crop { 
 
    overflow: hidden; 
 
    display: inline-block; 
 
} 
 
select { 
 
    border: none; 
 
    margin: 0px -20px 0px 0px; /* hide unused scroll bar */ 
 
}
<div class="wrap"> 
 
    <div class="crop"><!-- add a croping container --> 
 
    <select multiple size="21"><!--add size attribute equal to the length of list--> 
 
     <option>1 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>2 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>3 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>4 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>5 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>6 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>7 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>8 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>9 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>10 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>11 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>12 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>13 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>14 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>15 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>16 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>17 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>18 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>19 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>20 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
     <option>21 Vsdjflksdj fkajsdk fasjd;fkl sdaj;fk asdjf asdkljf klsdaj;f lsdajfk l;sdjkflsdjf kasd;fjl THE END</option> 
 
    </select> 
 
    </div> 
 
</div>

+0

Accettato e premiato il taglia. Nota rapida però; questa soluzione potrebbe essere soggetta a problemi di ritaglio su alcune piattaforme o forse combinata con le finestre di dialogo del bootbox. Tuttavia, dato che la mia domanda iniziale era semplicemente far funzionare tutto, hai risposto e ha fatto esattamente quello che ho chiesto, quindi grazie :) –

-1
.select { 
    height:100px; 
    overflow:scroll; 
} 
+0

Benvenuti in SO. Per favore, fai una risposta completa, spiegando il codice che scrivi. Ciò renderà la tua risposta più utile per i futuri lettori e per l'OP. –

Problemi correlati