2012-12-06 11 views
10

Ich habe eine Website und einige Probleme mit der Bildlaufleiste.Wie erhalten Sie eine Bildlaufleiste in einem Div mit fester Kopf- und Fußzeile?

Was ich will, kann ich am besten mit diesem Bild erklären.

My Website

Aber ich kann die Scrollbar wie diese nicht erhalten.

ich einige versucht haben, hier ist die jsfiddle

In dieser Geige Ich habe auch:

div[role="main"] 
{ 
    overflow-y: scroll; 
    margin: 60px 0; 
} 

Aber dieser Spielraum ist nicht in Ordnung, wie kann ich wissen, welche Marge ich brauche, ohne den Header zu wissen und Fußhöhe.

+0

Sie dieses Layout Javascript/jquery bekommen kann einfach mit, ohne die Höhe des Kopfes knowint und Fußzeile. Javascript berechnet automatisch für die Höhe von div role = main für Sie bei jeder Auflösung. Hast du das probiert? – w3uiguru

+0

@HappySingh von wo bist du? – Jack

+0

Dies muss durch html/css möglich sein. Ich habe es schon einmal gesehen, kann es aber nicht finden. –

Antwort

13

Dies kann durch die Verwendung von padding und box-sizing = border-box auf body (mit Körperhöhe 100% wird Padding in Höhe zählen, so dass die Box mit scroll wird genau zwischen Kopf- und Fußzeile)

html { 
overflow: hidden; 
height: 100%; 
} 

body { 
padding: 60px 0px; 
height: 100%; 
box-sizing: border-box; 
} 

div[role="main"] { 
overflow-y: scroll; 
height: 100%; 
} 

siehe http://jsfiddle.net/wPucQ/

EDIT: Hinzugefügt vergessen HTML-Tag in Code

+0

Überprüfen Sie einfach, ob die Bildlaufleiste hinter der Fußzeile steht, was nicht die exakte Lösung ist. – w3uiguru

+0

Haben Sie sich mit jfiddle angeschaut? (Oder verwenden Sie Mozilla 3.6 -/IE 7-) – SergeS

+0

In Google Chrome scheint dies zu funktionieren. Aber in FireFox ist es nicht :( –

0

Versuchen Sie, Min-Höhe oder Höhe für dieses Div zu erwähnen Div [Role = "Main"] {Überlauf-y: scroll; Rand: 60px 0; min-height: 400px;}

+0

Erwähnen Höhe ist ein bisschen schwer, wenn ich nicht die Bildschirmhöhe des Benutzers kenne. Nur ein paar px ist nicht der richtige Weg. % ist eine andere Option, aber die Schriftarten sind in den heutigen Browsern/Geräten unterschiedlich hoch. –

2

Sie müssen den rollbaren Element eine Höhe geben, so kann die Scroll-Leiste Position berechnet werden.

div[role="main"] 
{ 
    height:400px; 
    overflow-y: scroll; 
    margin: 60px 0; 
} 

http://jsfiddle.net/gkxV4/

+1

Einstellung Höhe funktioniert nicht für große Bildschirme. –

+0

Wenn Sie es verwenden, um eine ganze Seite anzuzeigen, wäre es viel einfacher (und brauchbarer), die Kopf-/Fußzeile an das Ansichtsfenster zu kleben. – Keyo

+0

meinst du mit sticky die feste Kopf- und Fußzeile? Cuz das ist, was ich getan habe :) –

-1

meine Geige Siehe ganze Logik fiddle http://jsfiddle.net/MA9k3/7

JQuery-Code:

var doc_height = $(window).innerHeight(); 

var header_height = $("header").height(); 
var footer_height = $("footer").height(); 

var div_height = doc_height - (header_height + footer_height); 

$("#content").css({ 
    "height": (div_height - footer_height) + "px", 
    "margin-bottom": footer_height + "px" 
}); 

alert($("#content").height()); 
+0

@bondye Es wird mit jeder Auflösung arbeiten. – w3uiguru

+0

Ich habe weder Javascript noch jQuery erwähnt. Es ist möglich in reinem HTML CSS. Ich habe es schon mal gesehen. Trotzdem danke für deine Hilfe. Alle Hilfe ist willkommen :) –

+0

Dann suchen Sie diese Geige: http://jsfiddle.net/mvivekc/2a7SB/1/ oder siehe: http://stackoverflow.com/questions/9167160/conditional-sticky-css -footer-with-fixed-header – w3uiguru