2016-07-08 20 views
6

Possiedo un div che può traboccare quando il contenuto viene aggiunto o rimosso.Spazio di riserva HTML per barra di scorrimento

Tuttavia, il progettista dell'interfaccia utente non desidera una barra di scorrimento visibile ma inattiva (come con overflow: scroll) e non desidera che il layout del contenuto cambi quando ne viene aggiunto uno e rimosso (come con overflow: auto).

C'è un modo per ottenere questo comportamento e considerando le diverse barre di scorrimento su piattaforme e browser diversi.

enter image description here https://jsfiddle.net/qy9a2r00/1/

+2

Ci sono plugin per sostituire la barra di scorrimento nativo, significa utilizzando JavaScript. – Stickers

+1

http://manos.malihu.gr/jquery-custom-content-scroller/ aiuterà, esempi qui: http://manos.malihu.gr/repository/custom-scrollbar/demo/examples/scrollbar_themes_demo.html – Suresh

risposta

0

si può sapere quanto spesso la barra di scorrimento è, utilizzando solo HTML & CSS e quindi non si conosce il width del (blu) segnaposto.

È possibile risolvere tale attività utilizzando lo scripting. Forza una barra di scorrimento in un contenitore nascosto e misura la larghezza interna ed esterna. La differenza è la larghezza della barra di scorrimento. Imposta questa larghezza (ad es. Come CSS) sull'elemento segnaposto. E nella parte difficile nascondere questo elemento ogni volta che viene mostrata una barra di scorrimento.

La solita soluzione a questo problema è quella che non si desidera.

+0

La soluzione usuale è che, vivendo con lo stile "auto" o "scroll", sostituisci l'intera barra di scorrimento da zero, o usando JS per misurare una barra di scorrimento e rilevarne l'aggiunta e la rimozione, in modo da poter regolare il blu stili di bar? –

1

L'unico modo per fare ciò è di rendere fissa la larghezza degli articoli nel contenitore. E dovrai essere prudente con la larghezza della barra di scorrimento.

.container { 
     width: 200px; 
     height: 200px; 
     overflow: auto; 
     overflow-x: hidden; 
     border: 1px solid black; 
    } 
    .item { 
     width: 200px; 
... 

https://jsfiddle.net/fr1jnmn6/1/

Problemi correlati