2014-09-30 72 views
8

我在另一个div中有一个div。内部div的边距为0,自动将其集中。但是,我无法让它在没有绝对的情况下浮到底部。有没有办法让一个相对的div浮动到正常的div底部?位置div到不同div的底部,不使用绝对

+2

一些代码将让我们更好地了解这一问题 – 2014-09-30 15:45:09

+1

这有什么错用'位置:absolute'? – 2014-09-30 15:45:12

+0

我有同一个div内的文字。并且为了响应性,当屏幕很小时,图像覆盖文本。 – user3506938 2014-09-30 15:45:43

回答

13

不使用position: absolute,你必须垂直对齐它。

可以使用vertical-align: bottom,其根据the docs

的垂直对齐CSS属性指定内嵌或表格盒的垂直对准。

所以,要么设置外层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>

+0

我怎么会也使内部中央,对齐在中间? – user3506938 2014-09-30 15:58:26

+0

内部的'text-align:center'或者'margin:0 auto'。 – LcSalazar 2014-09-30 16:01:06

+1

@ user3506938 - 如果你正在谈论垂直居中,它是'vertical-align:middle;' – LcSalazar 2014-09-30 16:01:57

-1

你可以通过设置到最高值100%的做到这一点。

的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;} 

检查出这个小提琴这里:http://jsfiddle.net/62wqufgk/

+1

这似乎不起作用。图像太低而不在div – user3506938 2014-09-30 16:51:38

+0

用户想要将内部div对齐到外部div的底部。提供的小提琴(看它)将“内部”(不再是“内部”)*放在“外部”下面。 – Pere 2015-06-10 08:18:33

-1

这种样式添加到内部DIV。

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

我发现的唯一办法,除非你的内容是静态的高度,是用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')); 
}); 

这将为列-DIV一,载有内工作div,如果另一列的高度较大。

令人不可思议的是这种简单的事不是通过CSS属性“内置”(即“浮动:底部”),不打破一切与绝对,等

+0

“浮动”没有意义。 float的意图是将元素移动到同一行上其他元素的左侧或右侧。这种用法在CSS没有其他方法的情况下被滥用。 – Rob 2017-08-20 12:28:00

0

现在,你可以简单地所有这些对齐问题都使用display: flex

在你的情况下,你可以简单地让父母弯曲,弯曲方向column(默认是行)和justify-content: flex-end。这种方法的优点是,如果父项中有多个项目,它也可以工作。

如果您有多个并且希望从父母的开始到结束都对齐它们,则可以将justify-content更改为另一个属性,例如space-betweenspace-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>