2013-10-29 7 views
18

Ich arbeite an einem Seitenlayout mit einer horizontalen Bildlaufleiste. Ich habe einige Panels mit festen Breiten in einer horizontalen Reihenfolge, die alle die Ansichtsfensterhöhe haben sollten. Ich entschied mich, die vh Einheit zu testen, um das zu tun.Wie verhindert man, dass VH-Einheiten die Bildlaufleiste ignorieren?

.panel { height: 100vh; } 

Das funktioniert gut, bis ich eine Bildlaufleiste bekomme. Das Problem ist, dass vh die von der Bildlaufleiste verwendete Höhe ignoriert und daher eine vertikale Bildlaufleiste hinzufügt.

Ich möchte die Höhe der Bildlaufleiste von den Messungen von vh subtrahieren; Gibt es einen Weg, dies zu tun?

+2

Wie wäre es '.panel {height: ber (100vh-17px); } '. Ich weiß nicht, wie groß die Bildlaufleiste ist und ob dies vom Browser/Betriebssystem abhängt. – kleinfreund

+0

@kleinfreund Ich habe das schon mal mit den neuesten Chrome und Safari Versionen versucht. Beide geben mir 'Unexpected CSS token:)'. Und trotzdem würde es das Problem mit der unbekannten Höhe der Bildlaufleiste geben, wie Sie bereits erwähnt haben. – Afterlame

+0

Dann möchten Sie vielleicht auf Javascript verlassen und berechnen Sie die _actual_ Höhe Ihrer Bildlaufleiste. Aber ich bin sicher, dass Sie eine gute CSS-basierte Lösungen wollen, was vorzuziehen wäre. Und ja, ich google und Viewport-Einheiten und calc() arbeiten nicht wirklich atm. – kleinfreund

Antwort

5

Sie könnten ein übergeordnetes Element mit overflow-y: hidden verwenden, um sicherzustellen, dass Sie keine vertikale Bildlaufleiste erhalten und dann sicher 100vh darin verwenden. Dies setzt voraus, dass Sie aus irgendeinem Grund tatsächlich 100vh benötigen und nicht nur den vertikalen Platz ausfüllen müssen.

HTML

<div id="main"> 
    <div id="container"></div> 
</div> 

CSS

#main { 
    width:200vw; 
    height:100%; 
    background: red; 
    position: absolute; 
    overflow-y: hidden; 
} 

#container { 
    height: 100vh; 
    width:10px; 
    background: blue; 
} 
+0

Ich sehe keine Profis in der Verwendung von Cover mit Überlauf versteckt. Sie können dann nur Höhe einstellen: 100% zu #container, nicht 100vh. –

+1

Ich stimme zu, dass 100vh ist unnötig und angedeutet, so viel in meiner Antwort, aber die Frage war speziell auf Viewport-Einheiten. – mirichan