2017-07-28 1 views
2

Ich will ein Kind div über seine Eltern positionieren, wie das folgende Bild zeigt:Position div oben auf der übergeordneten

child and parent

Das Kind hat keine feste Höhe.

Relevante Code:

<footer id="parent"> 
    <div id="child" v-if="composing"> 
     <img src="/img/typing-indicator.gif" alt="typing" /> 
     <span>User is typing...</span> 
    </div> 
    <div id="input-container"> 
     ..... 
    </div>  
</footer> 
+1

'Position: relative' auf der übergeordneten Element, 'position: absolute' auf dem Kindelement und' top: -value', wobei Wert die willkürliche Zahl ist, auf die Sie es einstellen müssen. Eine bessere Lösung wäre, das DOM so zu strukturieren, wie Sie es brauchen, anstatt zu versuchen, den Dokumentenfluss zu bekämpfen. Wird die Höhe des Kindelements dynamisch? – UncaughtTypeError

+0

[Überprüfen Sie diese Frage] (https://stackoverflow.com/questions/7866804/position-children-div-above-parent-div?rq=1), und [vielleicht kann diese Geige Ihnen helfen] (http://jsfiddle.net/5JZGg/76/) – JiFus

Antwort

2

Geben position: relative zu Eltern und position: absolute; & bottom: 100% zu Kind

.parent { 
 
    position: relative; 
 
    background: pink; 
 
    margin-top: 20px 
 
} 
 

 
.child { 
 
    position: absolute; 
 
    bottom: 100%; 
 
    left: 0; 
 
    right: 0; 
 
    background: yellow; 
 
}
<div> 
 
    <footer class="parent"> 
 
    parent 
 
    <div class="child" v-if="composing"> 
 
     child 
 
    </div> 
 
    </footer> 
 
</div>

1

Verwenden margin-top zu negativen seiner Höhe (zum Beispiel 30px):

.child{ 
    margin-top:-30px; 
} 
1

Sie position: absolute auf das Kind und position: relative auf dem übergeordneten verwenden können, so ähnlich funktionieren sollte:

.parent { 
    position: relative; 
    width: XXXX; 
    height: XXXX; 
} 

.child { 
    position: absolute; 
    bottom: 100%; 
    left: 0; 
    width: XXXX; 
    height: XXXX; 
} 

Sie können auch Immobilien auf der absoluten Kind Position verwenden verwandeln:

.child { 
    position: absolute; 
    top: 0; 
    transform: translateY(-100%); 
    left: 0; 
    width: XXXX; 
    height: XXXX; 
} 
+0

Diese Lösung ist fast gut, außer "bottom: 100%" sollte anstelle des negativen "top" Wertes verwendet werden. "top: -100%;" bedeutet, dass Kinder so viele Pixel über dem Paren liegen wie die Elternhöhe - z. Wenn die Elternhöhe "100px" ist, würde die obere Kante der Kinder "100px" über dem Eltern beginnen. DEMO von 'unten: 100%': https://jsfiddle.net/ds3kvz28/ DEMO von 'Spitze: -100%': https://jsfiddle.net/ds3kvz28/1/ – norin89