2014-09-30 13 views
8

Ich habe ein div in einem anderen div. Das innere div hat Ränder von 0, automatisch, um es zu zentralisieren. Ich kann jedoch nicht erreichen, dass es auf den Boden schwebt, ohne es absolut zu machen. Gibt es überhaupt eine relative div float auf den Grund eines normalen div?Position div nach unten eines anderen div, ohne Absolute

+2

Einige Code würde uns ein besseres Verständnis des Problems –

+1

Was bei der Verwendung von 'Position falsch ist: absolute'? –

+0

Ich habe Text innerhalb der gleichen div.und für die Reaktionsfähigkeit überlagert das Bild den Text, wenn der Bildschirm klein ist. – user3506938

Antwort

13

Ohne position: absolute zu verwenden, müssten Sie es vertikal ausrichten.

können vertical-align: bottom verwenden, die nach the docs:

Die vertical-align CSS-Eigenschaft um die vertikale Ausrichtung eines inline oder Tabellenzellenfeld gibt.

also entweder die äußere div als Inline-Element festgelegt oder als table-cell:

#outer { 
 
    height: 200px; 
 
    width: 200px; 
 
    border: 1px solid red; 
 
    display: table-cell; 
 
    vertical-align: bottom; 
 
} 
 

 
#inner { 
 
    border: 1px solid green; 
 
    height: 50px; 
 
}
<div id="outer"> 
 
    <div id="inner"> 
 
    </div> 
 
</div>

+0

Wie würde ich auch die innere zentrale, in der Mitte ausgerichtet? – user3506938

+0

'text-align: center' auf der äußeren, oder' margin: 0 auto' auf der inneren. – LcSalazar

+1

@ user3506938 - Wenn Sie über vertikal center sprechen, ist es 'vertical-align: middle;' – LcSalazar

-1

Sie können dies tun, indem sie auf 100% nach oben Wert.

Html

<div class="outer"> 
<div class="inner"></div> 
</div> 

CSS

.outer {height:400px;width:400px;background:#eaeaea;} 
.inner {position:relative;top:100%;height:50px; width:50px; background:#fad400;} 

Check diese Geige hier aus: http://jsfiddle.net/62wqufgk/

+1

das scheint nicht zu funktionieren. das Bild ist zu niedrig und aus dem div – user3506938

+0

Der Benutzer möchte das innere div an der Unterseite des äußeren div ausgerichtet werden. Die mitgelieferte Geige (schau es dir an) legt das "innere" (das nicht mehr "innerlich" ist) * unter das "äußere". – Pere

-1

dieses Styling mit dem inneren div hinzufügen.

position: relative; 
top: 100%; 
transform: translateY(-100%); 
0

Der einzige Weg, ich fand, es sei denn, Ihre Inhalte eine statische Höhe ist, war es mit Jquery zu tun wie so:

$(document).ready(function(){ 
    inner_height = $('#inner-div').height(); 
    outer_height = $('#outer-div').height(); 
    margin_calc = (outer_height - inner_height) 
    $('#inner-div').css('margin-top', (margin_calc+'px')); 
}); 

Dies wird innerhalb einer containing- für eine Spalte-div arbeiten div, wenn die Höhe einer anderen Spalte größer ist.

Es ist unglaublich, diese einfache Sache ist, nicht über eine CSS-Eigenschaft ‚eingebaut‘ (dh „float: unten“), das alles andere mit Absoluten nicht brechen usw.

+0

"float" würde keinen Sinn ergeben. Die Absicht von float ist es, Elemente nach links oder rechts von anderen Elementen in derselben Zeile zu verschieben. Es wurde viel missbraucht, wo CSS keine alternativen Methoden hatte. – Rob

0

Heute können Sie einfach Verwenden Sie für alle diese Ausrichtungsprobleme display: flex.

In Ihrem Fall können Sie einfach die Eltern eine Flex-, Flex-Richtung column (der Standardwert ist Zeile) und justify-content: flex-end. Der Vorteil dieses Ansatzes besteht darin, dass es auch funktioniert, wenn Sie mehrere Elemente im übergeordneten Element haben.

Wenn Sie mehrere diejenigen haben und wollen, dass sie alle haben von Anfang an der Mutter bis zum Ende ausgerichtet sind, können Sie justify-content auf eine andere Eigenschaft wie space-between oder space-evenly ändern.

#outer { 
 
    height: 200px; 
 
    width: 200px; 
 
    border: 1px solid red; 
 
    display: flex; 
 
    justify-content: flex-end; 
 
    flex-direction: column; 
 
} 
 

 
#inner { 
 
    border: 1px solid green; 
 
    height: 50px; 
 
}
<div id="outer"> 
 
    <div id="inner"> 
 
    </div> 
 
</div>

Verwandte Themen