別のdivに1つのdivがあります。内側のdivには0のマージンがあり、自動化して中央に配置します。しかし、絶対にせずに底に浮かせることはできません。とにかく、通常のdivの下部に相対divをフロートさせる方法はありますか?
position: absolute
を使用しないと、垂直方向に揃える必要があります。
vertical-align: bottom
を使用できます。これは docs に従って:
CSSのvertical-alignプロパティは、インラインボックスまたはテーブルセルボックスの垂直方向の配置を指定します。
そのため、外側のdivをインライン要素として設定するか、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>
最近では、これらすべてのアライメントの問題にdisplay: flex
を使用できます。
あなたの場合、親を単にflex、flex-direction column
(デフォルトはrow)、justify-content: flex-end
にすることができます。このアプローチの利点は、親に複数のアイテムがある場合にも機能することです。
複数のものがあり、それらをすべて親の先頭から最後まで揃えたい場合は、justify-content
をspace-between
やspace-evenly
などの別のプロパティに変更できます。
#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>
このスタイルを内側のdivに追加します。
position: relative;
top: 100%;
transform: translateY(-100%);
あなたのコンテンツが静的な高さでない限り、私が見つけた唯一の方法は、jqueryでそうすることでした:
$(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'));
});
これは、別の列の高さが大きい場合、contain-div内のcolumn-divで機能します。
この単純なものはcss-property(つまり、「float:bottom」)を介して「組み込まれている」わけではなく、絶対値などで他のすべてを壊すことはありません。