2014-09-23 9 views
11

Gibt es eine Lösung ohne JS?Stellen Sie die Breite des fest positionierten div relativ zu seinem übergeordneten Element mit der maximalen Breite ein

html

<div class="wrapper"> 
    <div class="fix"></div> 
</div> 

css

.wrapper { 
max-width: 500px; 
border: 1px solid red; 
height: 5500px; 
position: relative; 
} 


.fix { 
width: inherit; 
height: 20px; 
position:fixed; 
background: black; 
} 

ich irgendwelche anderen Arten für .wrapper außer width: 100%; hinzufügen kann nicht. Ich versuche mit width: inherit aber es funktioniert nicht für mich, weil ich Eltern div mit nur max-width. source

Hier ist JsFiddle Demo

Antwort

21

A position:fixed Element auf seine Eltern nicht mehr relativ ist. Es respektiert nur die Boudaries des Darstellungsbereichs.

MDN Definition:

Fest
Sie für das Element nicht Raum verlassen. Positionieren Sie es stattdessen an einer bestimmten Position relativ zum Ansichtsfenster des Bildschirms und verschieben Sie es nicht beim Scrollen.

So ein width, max-width, oder was auch immer Eigenschaft wird nicht von dem festen Elemente respektiert werden.

EDIT

In der Tat wird es nicht die width erben, weil es keine auf der Verpackung definiert width Eigenschaft ist .. Also, versuchen Sie, das Kind als width: 100% Einstellung und erben die max-width:

http://jsfiddle.net/mx6anLuu/2/

.wrapper { 
    max-width: 500px; 
    border: 1px solid red; 
    height: 5500px; 
    position: relative; 
} 


.fix { 
    max-width: inherit; 
    width: 100%; 
    height: 20px; 
    position:fixed; 
    background: black; 
} 
+1

Es bedeutet nicht, dass es die' Breite' von Eltern durch 'erben'-Wert nicht erben wird. –

+1

@HashemQolami, das ist wahr ... Die Wahrheit ist, dass es die 'Breite' nicht erbt, weil es keine 'Breite' im Elternteil gibt ...Ich habe die Antwort aktualisiert. – LcSalazar

+0

Danke Mann! :) – CroaToa

1

Es gibt bereits eine Breite für die Spalte, legen Sie einfach die Breite des festen Elements zu erben. kein Grund, Dinge zu komplizieren.

CSS:

.col-sm-3 { width: 25%; } 
.fixed-in-col { width: inherit; ... } 

HTML:

<div class="col-sm-3"> 
    <div class="fixed-in-div"> 
     ... 
    </div> 
</div> 
Verwandte Themen