Sie kennen wahrscheinlich die Technik zum Zentrieren von Seiten, bei der zu einem äußeren Div automatische linke und rechte Ränder hinzugefügt werden.
#page-wrap {
margin: 0 auto;
}
Einer der Nachteile dieser Technik ist, dass bei Websites mit mehreren Seiten das Layout beim Wechseln zwischen Seiten, die Scrollbalken erfordern, und Seiten, die dies nicht tun, leicht „springen“ kann. Dies liegt daran, dass die ~16 Pixel breite Scrollleiste im Browserfenster den Inhaltsbereich entsprechend verkleinert und sich die Wrap-Div darin neu zentriert, was zu dem Sprung führt.
Eine Möglichkeit, diesen Sprung zu vermeiden, besteht darin, auf jeder Seite Scrollbalken zu erzwingen, unabhängig davon, ob sie benötigt werden oder nicht. Dies mag einige Puristen verärgern, aber ich halte es für eine anständige Lösung.
Dies ist eine Möglichkeit, dies zu erreichen, die die Seite immer nur ein kleines bisschen höher als das Browserfenster macht und so eine rechte Scrollleiste erzwingt.
html {
height: 100%;
margin-bottom: 0.01em;
}
Das ist eine gute Idee, aber in Firefox scheint sie nicht zu funktionieren.
Hier ist eine Möglichkeit, nur die rechte Seitenleiste mit einem unschönen und semantisch falschen Hack zu erzwingen.
#scroll {
position: absolute;
top: 0;
bottom: -0.1px;
width: 1em;
z-index: -1;
}
Fügen Sie dann einfach eine leere Div in Ihr HTML mit der ID „scroll“ ein. Wie gesagt, das ist eine ziemlich unschöne Art, es zu tun, hier ist ein viel saubererer Weg.
html {
height: 102%;
}
Hier ist eine weitere Lösung, die effektiv sowohl horizontale als auch vertikale Scrollbalken erzwingt.
html {
overflow: scroll;
}
Ein Beispiel dafür, wie dies funktioniert, sehen Sie in diesem Beispiel. Es wäre schön, wenn wir nur den vertikalen Scrollbalken bekommen könnten, indem wir overflow-y auf scroll setzen.aber auch das funktioniert wieder nicht in Firefox.UPDATE: Tatsächlich wurde mir das Licht gezeigt. Das Zuweisen von overflow-y zu scroll funktioniert und es funktioniert in Firefox, Safari und IE 6, und das macht es zur besten Lösung.
html {
overflow-y: scroll;
}
Was ist mit
html { overflow: -moz-scrollbars-vertical !important; }
für Firefox?
Das funktioniert in Firefox einwandfrei.
html { min-height: 100%; margin-bottom: 1px; }@Regis: Diese Lösung funktioniert in Firefox großartig, danke! Sie funktioniert aber tatsächlich NUR in Firefox, daher müssten wir sie sowieso mit einer anderen Technik kombinieren.
@chipgrafx: Ja, das funktioniert auch in Firefox! Aber IE berücksichtigt die min-height-Sache nicht, daher denke ich, dass die beste Lösung darin besteht, die Höhe von html auf über 100 % zu setzen, ist der solideste Weg.
Ich habe immer bevorzugt, einfach ein paar Zeilenumbrüche zu verwenden, um die Scrollleiste zu erstellen :)
Ich scherze natürlich, gute Lösung.
Guter Tipp, aber warum würden Sie diese Technik zur Zentrierung Ihrer Website verwenden? Mir fallen nicht viele Situationen ein, in denen Sie diese Technik verwenden müssten. Normalerweise reicht die Verwendung von absoluter oder relativer Positionierung mit einem negativen Margin aus. Kann mir jemand eine Situation nennen, in der dies tatsächlich erforderlich wäre?
Trolle nicht, bin nur neugierig :)
@Andrew: Tatsächlich verwenden TONNEN von Websites genau diese Technik zur Zentrierung ihrer Inhalte. Digg.com, Apple.com, Newsvine.com… Ich würde sagen, es ist mit Abstand die häufigste Technik zur Zentrierung von Inhalten. Ganz zu schweigen davon, dass CSS-Tricks.com es verwendet, was Beweis genug ist =)
Ein einfacherer Weg, und er funktioniert in allen Browsern.
html {
min-height:100%;
margin-bottom:1px
}
Beim Teufel… ich habe die IE/min-height-Sache total vergessen. *schlägt sich auf die Stirn*
Denken Sie auch daran, dass ältere Browser die Zentrierung mit auto-Rändern links/rechts nicht unterstützen. Sie müssen text-align: center; auf einen Container um das zu zentrierende Element erzwingen.
Denken Sie daran, text-align auf "text-align: left;" auf den zentrierten Elementen (innerhalb des Containers) zurückzusetzen, da text-aligns vererbt wird.
hier ist ein weiterer guter Artikel zu diesem Thema http://www.csskarma.com/articles/dummy_scrollbar/
Hey, diese Seite sieht toll aus. Ist das eine WordPress-Vorlage oder wurde das für die Seite vorab erstellt?
Steve
oder einfach machen
html {
height:100.1%;
}
Einfach lol
> Es wäre schön, wenn wir nur die vertikale Scrollbar bekommen könnten
> durch Zuweisung von overflow-y zu scroll, aber auch das
> funktioniert nicht in Firefox.
Tatsächlich funktioniert diese Lösung *in* Firefox, und sie scheint mir die sauberste zu sein.
Code
html { overflow-y: scroll; }
Ich habe dies in einem einfachen Testfall in Firefox 2 und 3.0b1 ausprobiert, und ich bekomme für beide Versionen eine vertikale Scrollleiste.
Es spielt eigentlich keine Rolle, ob IE min-height in diesem Verwendungszweck berücksichtigt. Alles, was Sie tun, ist, eine Scrollleiste auf der rechten Seite für Nicht-IE-Browser zu erzwingen. IE berücksichtigt bereits standardmäßig den Platz für die Seitenleiste, sodass es keine horizontalen Sprünge gibt.
Und ich bin ein wenig verwirrt, warum Leute denken, dass dies etwas mit der eigentlichen Zentrierung Ihres Inhalts zu tun hat. Worüber Chris (und andere) debattieren, ist, wie man den leichten horizontalen Sprung vermeidet, den man in Firefox bekommt, wenn man von Seite zu Seite navigiert und der Inhalt auf einigen Seiten über dem Falz bleibt und auf anderen unter dem Falz liegt. Macht das Sinn?
@Daniel Holbert: Sie haben vollkommen Recht, ich habe den Artikel aktualisiert, da ich jetzt denke, dass dies der beste Weg ist, dies zu tun.
@chipgrafx: Sie haben auch vollkommen Recht, ich habe nicht berücksichtigt, dass man in IE nie Sprünge hat, daher muss es nicht wie üblich isoliert betrachtet werden.
Was ist mit Opera? overflow-y:scroll funktioniert dort nicht.
@Alex: grrrroan… Sie haben Recht, es funktioniert nicht in Opera, ich habe es gerade getestet =P.
Ich glaube, wir sind wieder bei der Einstellung der Höhe auf >100% als beste browserübergreifende Lösung.
Overflow-y: scroll funktioniert in allen von mir getesteten Browsern… Guter Trick!
In der Tat ein guter Tipp..
Ich habe das noch nicht benutzt, aber es könnte sehr effektiv sein. Das Problem hat mich bisher nicht gestört. Hat sich ein Kunde darüber beschwert?
Das ist großartig Chris, danke! =)
Vielen Dank!
html {overflow-y: scroll;} macht nicht das Richtige für Opera… gerade herausgefunden.
Oh, und gerade auch herausgefunden, dass es hier bereits erwähnt wurde… na ja :-)
@Lucy, ich behandle das tatsächlich in Screencast #4.
VIELEN DANK FÜR DIESEN BEITRAG! Ich dachte, ich werde verrückt, und ich habe buchstäblich Stunden, Tage, Wochen damit verbracht, jede CSS-Zeile durchzugehen, um herauszufinden, was ich falsch gemacht habe. DANKE!!
Ich liebe Ihre Lösungen und die Art und Weise, wie Sie versuchen, Hacks zugunsten saubereren und standardkonformeren Codes zu vermeiden.
Viele Grüße :)
Es funktioniert nicht auf Apple Safari, ich habe dieses Problem.
Es funktioniert nicht in Safari… :(
Das ist ein fantastischer CSS-Tipp, ich kann Ihnen nicht sagen, wie oft
html {den Tag gerettet hat!overflow-y: scroll;
}
Leute, fügen Sie eine übergeordnete Wrapper-DIV zu Ihrem Layout hinzu und fügen Sie unten CSS hinzu.
.mainWrapper { height:100%;
overflow-y:auto;}
.mainWrapper { height:100%;
overflow-y:scroll;}