Fixed-position-div nicht bleiben, enthalten in der Umhüllung div-overlays gesamten Bildschirm?
Ich versuche, mich einer festen position, div Aufenthalt in einem äußeren div. Ich will das fixe positionieren von div-Breite zu 100%. Allerdings, wenn ich die Breite auf 100%, das fixe positionieren von div-deckt den gesamten Bildschirm und overlays die Bildlaufleiste im Firefox/IE8 usw. Hier ist ein Beispiel von was ich spreche:
<div style="width: 380px; height: 125px;overflow-y: scroll;overflow-x: hidden;">
<div style="position:fixed;width:100%;">
<div style="width: 100%;background: red; text-align: center; height:50px;">header</div>
</div>
<div style="margin-top: 50px; height:250px;">
Contents here<br />
Contents here<br />
Contents here<br />
Contents here<br />
Contents here<br />
</div>
</div>
Wie Sie sehen können, ist das äußere div hat eine Breite von 380 Pixel... also, ich würde nicht denken, es möglich, für die fixed-position-div zu erweitern, die außerhalb dieser Grenze, doch das tut es.
Was mache ich falsch?
Dank!
Versuchen Sie, die äußeren <div>'s position relative?
InformationsquelleAutor Polaris878 | 2011-02-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einem element mit fester position positioniert ist, relativ zum viewport. Fixed positionierte Elemente werden entfernt, aus dem normalen Fluss. Das Dokument und andere Elemente Verhalten sich wie die fixed-positionierte element nicht vorhanden ist.
Obwohl Sie erklären
position:fixed;
Sie nicht geben Sie einen Wert für dietop
undleft
Eigenschaften. Der Standardwert für beide Eigenschaften istauto
können die browser berechnen die Obere Kante und die linke Kante Positionen. Der berechnete Rand Positionen drehen, um das element am oberen und linken Rand edge-Positionen in den normalen Ablauf, die ist, warum es sich bewegt, wenn Sie einen Rand.left
undtop
, aber nichtright
...Es ist ein "Wir haben um dieses Ding irgendwo." Art der Sache.
InformationsquelleAutor melhosseiny
Fest ist immer relativ zum parent-Fenster, nie ein element. Sobald die position legen Sie fest, seine aus dem Belegfluss.
http://www.w3.org/TR/CSS2/visuren.html#fixed-positioning
InformationsquelleAutor Loktar
Den Browser richten Sie die Feste div die beste, die Sie können, um die mit div standardmäßig.
Meine Lösung ist, legte es in einen relativen div, dass die Schwimmer auf der rechten Seite. Dies wird geben Sie Ihren Ausgangspunkt und das fixe div-Element wird nach rechts gefloatet.
Allem die position: fixed wird hier tun, ist machen
Ich weiß, dieser Beitrag ist alt, aber ich hoffe, es hilft jemand. Funktioniert im IE7+ und Firefox sicher.
InformationsquelleAutor Darkwing Duck
Es ist genau Ihre Frage, die mir geholfen haben eine Lösung zu finden, die für mich gearbeitet. Ich hatte zum erstellen der "Heilige Gral" (das ist eine Feste Spalte auf der linken und rechten und eine flüssige Säule in der Mitte) von Grund auf neu, sondern gebraucht fixed divs die jeweils die relative, fließenden Spalten.
Während es ist nicht unbedingt semantisch korrekt (gut, weder fixiert sind, divs...) es funktioniert tatsächlich genau wie nötig und sogar nach dem ändern der Größe der mittleren Spalte der "Heilige Gral".
Unten ist eine Kopie von den genauen CSS verwendet habe ich:
Können Sie auch hinzufügen
top:50px;
zu stoßen, es senkrecht nach unten.Der einzige Nachteil an diesem ist in der Größe der Fenster. Alles ist fein, bis das Fenster geht unter die minimale Größe (falls Sie eine haben).
Da diese verwendet einen Prozentsatz des Containers, wird es weiterhin zu Folgen, obwohl die view-port hat aufgehört zu schrumpfen.
Und, wenn Sie neugierig sind, hier ist, wie zu schaffen, den Heiligen Gral:
http://www.alistapart.com/articles/holygrail/
InformationsquelleAutor mayoman7
Festen, Absoluten und Statischen Positionen sind nicht relativ zum übergeordneten.
Also, wenn Sie etwas ändern, Sie sind sich über Ihre base (e.g oberen,linken Ecke der Seite für das absolute)
Denken Sie an ein anderes auslegen Methode.
Absolute ist, wenn die Eltern die relative position... position:fixed gehorcht den Eltern Ränder, die macht mich glauben, dass es sollte auch gehorchen den Eltern Breite.
InformationsquelleAutor AbiusX
Dieser post ist sehr alt, aber andere profitieren können von dieser Antwort. In modernen Browsern, die Sie verwenden konnten
transform: translate3d(0,0,0);
auf die.parent
um die position fixiert Verhalten, wie absolute:Über diese Struktur können Sie die folgenden CSS:
Im folgenden wird die
.child
Verhalten, als wenn Sie es wäreposition: absolute;
. Dies ist sehr hilfreich, wenn Sie müssen, verwenden Sie Transformationen mit den Eltern mitoverflow: hidden;
. Jemand hatte ein gutes Beispiel in diesem Fall hier.InformationsquelleAutor Roland