2017-08-10 3 views
1

Die Position ist etwas, das mich wirklich verwirrt, wie der Name, absolute oder relative. Ich versuche, ein einfaches Layout zu erstellen, wo die Überschrift statisch sagt, und wenn etwas hinzugefügt oder mehr/weniger gelöscht in die .filter Klasse selbst anpassen, aber jetzt meine .filter die Klasse beginnt von oben, während es sollte relativ sein zu .subheading.Inhalt nach fester Position

Was mache ich falsch?

https://codepen.io/codearts/pen/GvEoBZ

.header{ 
 
    position:fixed; 
 
    background:black; 
 
    height:60px; 
 
    width:100% 
 
} 
 
.subheader{ 
 
    height:40px; 
 
    background:grey; 
 
    position:absolute; 
 
    top:60px; 
 
    width:100%; 
 
} 
 
.filter{ 
 
    position:absolute; 
 
}
<div class="container-fluid"> 
 
    <div class="row"> 
 
    <div class="col-12"> 
 
     <div class="header"></div> 
 
     <div class="subheader"> 
 
     This can be either 
 
     </div> 
 
    </div> 
 
    <div class="filter"> 
 
     <div class="col-6"> 
 
      This can be col-1 
 
     </div> 
 
      <div class="col-6"> 
 
     This can be col-2 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

+0

Da sowohl Ihr Subheader als auch der Filter absolut positioniert sind, sollten Sie den Wert 100px (60 + 40) für Ihren Filter unter dem Subheader festlegen. –

+0

Es wird sie an einem Ort kleben lassen. Wenn ich meinen Untertitel zu groß mache, wird der Filter nicht gedrückt, sondern abgedeckt. @RaJeshRiJo – Nofel

+0

ok, also werden Sie sowohl Header und Subheader als oben fixiert halten? –

Antwort

1

Ich versuche, Ihr Problem zu lösen, nicht sicher, dass dies auf Ihre Situation helfen wird, versuchen Sie es bel ow [Fidder] [1].

Was Sie tun sollten, ist alle drei div in einen einzigen Container zu setzen und Padding-Top als feste Kopfhöhe zu setzen. Und lassen Sie Subheader und Filter wie es ist. Sie müssen nicht positioniert werden.

[1]: https://jsfiddle.net/rajsnd08/5mra9tsv/2/ 
+0

Das gearbeitet, aber immer noch gefragt, wie funktioniert 'feste' Position. – Nofel

+1

Es ist einfach, was auch immer Sie als fixiert positioniert haben, es bleibt auf dem Display fixiert. Es wird nicht seine Position geändert, wenn Sie blättern. Hier Kopfzeile oben fixiert durch Angabe von oben: 0, Means Header muss von oben 0px fest positioniert werden. –

0

Keine Notwendigkeit für .filters und .subheader in position:absolute sein.

Es ist komplexer als das, aber kurz gesagt, absolute Position können Sie ein Element aus dem Fluss entfernen und platzieren Sie es in Bezug auf seine Eltern. Aber dazu müssen seine Eltern in position: relative sein, aber ich denke nicht, dass du es in diesem Fall brauchen würdest.

einfach eine margin-top zu .subheader hinzufügen und es wird den Trick tun :)

(eigentlich als un Johannes Kommentar)

EDIT

Lösung in Geige: https://jsfiddle.net/derdnjzs/

+0

Wenn ich "Untertitel" entferne, wird ein Leerzeichen dazwischen mit Rand oben – Nofel

+0

Okay, so müssen Sie die "Position: behoben" Header vom Rest trennen. Setzen Sie '.header' in seinen eigenen Wrapper und' .subheader' & '.filters' in einen anderen Container. Eigentlich könnte die Geige von Rajesh entweder arbeiten: https://jsfiddle.net/rajsnd08/5mra9tsv/2/ –

+0

Diese Geige Ich habe gerade die Arbeit machen: https://jsfiddle.net/derdnjzs/ –