2016-03-27 5 views
2

Wenn wie dies mit Layout:Make Scrollbar stattdessen fixiert werden Layout Brech

div { 
 
    width: 25vw; 
 
    height: 150vh; 
 
    float: left; 
 
    background: rgb(30,120,210) 
 
} 
 
div:nth-child(2n+2) { 
 
    background: rgb(210,120,30) 
 
}
<div></div> 
 
<div></div> 
 
<div></div> 
 
<div></div>

Scrollbar Design zermalmt. Ohne Scrollbalken funktioniert es gut, jedes Element benötigt 1/4 der Bildschirmbreite. Nun wäre eine Lösung, width: calc(25vw - 17px) zum letzten Element hinzuzufügen, aber mein Gitter ist viel komplizierter als das. Also habe ich darüber nachgedacht, ob es möglich ist, den Schieberegler ähnlich wie position: fixed zu gestalten, so dass er über Elemente hinausgeht anstatt sie zu zerquetschen. Oder noch besser, wenn möglich, Scrollbar zu entfernen. Dieses Problem tritt unter Linux Firefox oder Chrome nicht auf.

+0

Ich habe kein Problem mit Google Chrome unter OSX. Vielleicht möchten Sie Ihr Markup zuerst auf mehreren Browsern testen. Nimm nicht den Weg des schlechten Designs, nur weil der IE keinen HTML-Interpreter hat. –

+0

@IvanVenediktov OS X und einige Linux-Fenstermanager haben standardmäßig layoutfreie Bildlaufleisten, sie überlappen einfach den Inhalt. Sieh dir die Systemeinstellungen> Allgemein> Bildlaufleisten an: Immer –

+1

@IvanVenediktov Ja, ich habe vergessen, das zu erwähnen. Unter Linux (Ubuntu) Firefox & Chrome existiert dieses Problem nicht. – Kunok

Antwort

2

Warum nicht einfach width: 25% anstelle von width: 25vw verwenden? Dann wird die Bildlaufleiste berücksichtigt.

Arbeitsbeispiel:

div { 
 
    width: 25%; 
 
    height: 150vh; 
 
    float: left; 
 
    background: rgb(30,120,210) 
 
} 
 
div:nth-child(2n+2) { 
 
    background: rgb(210,120,30) 
 
}
<div></div> 
 
<div></div> 
 
<div></div> 
 
<div></div>

+0

Sorry für langsame Antwort, dauerte eine Weile, um dies tatsächlich zu testen (http://i.imgur.com/2P00y5p.png) und es funktioniert. Eine sehr gute Idee. – Kunok

1

Wenn Sie flexbox verwenden kann es einfach durch flex und min-width Eigenschaften gelöst werden:

body { 
 
    display: flex; 
 
    flex-flow: row wrap; 
 
} 
 

 
div { 
 
    flex: 1; 
 
    height: 150vh; 
 
    background: #123; 
 
    min-width: 25%; 
 
    max-width: 25%; 
 
} 
 

 
div:nth-child(odd) { 
 
    background: #222; 
 
}
<div></div> 
 
<div></div> 
 
<div></div> 
 
<div></div> 
 
<div></div>

So kann max-width für jedes neue Element in der Zeile verwendet werden, um der Regel zu folgen.

PS: für Cross-Browser-Tests, vergessen Sie nicht prefix flex Eigenschaften.

+1

Entschuldigung, es ist immer noch zu früh, Flex aufgrund älterer Browserunterstützung zu verwenden – Kunok

+1

Ja, aber wenn Sie wirklich alte Browser interessieren. Aber alle aktuellen Browser unterstützen es: http://caniuse.com/#search=flex. Außerdem können Sie Polyfills finden, die nur einen zukunftssicheren Code unterstützen. Ich benutze es bereits in meinen Projekten. – nikoloza

+0

Danke für Infos. Ich werde dann Flex in meinen kommenden Projekten verwenden. – Kunok

Verwandte Themen