当前位置:  开发笔记 > 前端 > 正文

如何将div放在容器的底部?

如何解决《如何将div放在容器的底部?》经验,为你挑选了8个好方法。

给出以下HTML:

我想#copyright坚持到底#container.

我可以不使用绝对定位来实现这一目标吗 如果float属性支持'bottom'的值,那么似乎可以做到这一点,但不幸的是,它没有.



1> User..:

可能不是.

分配position:relative#container,然后分配position:absolute; bottom:0;#copyright.


#container {
    position: relative;
}
#copyright {
    position: absolute;
    bottom: 0;
}


2> 小智..:

实际上,@ User接受的答案只有在窗口很高且内容很短的情况下才有效.但是,如果内容是高大的窗口很短,它将把版权信息在页面上的内容,然后向下滚动看到的内容将让你有一个浮动的版权声明.这使得这个解决方案对大多数页面都没用(实际上就像这个页面一样).

最常见的方法是演示"CSS粘性页脚"方法,或略微变细.这种方法效果很好 - 如果你有一个固定的高度页脚.

如果你需要一个可变高度的页脚,如果内容太短,它将出现在窗口的底部,如果窗口太短,你需要在内容的底部,你会怎么做?

吞下你的骄傲,并使用一张桌子.

例如:

* {
    padding: 0;
    margin: 0;
}

html, body {
    height: 100%;
}

#container {
    height: 100%;
    border-collapse: collapse;
}



    
Lorem ipsum, etc.


3> Josh Crozier..:

flexbox方法!

在支持的浏览器中,您可以使用以下内容:

这里的例子

.parent {
  display: flex;
  flex-direction: column;
}
.child {
  margin-top: auto;
}

.parent {
  height: 100px;
  border: 5px solid #000;
  display: flex;
  flex-direction: column;
}
.child {
  height: 40px;
  width: 100%;
  background: #f00;
  margin-top: auto;
}
Align to the bottom


4> Hashbrown..:

是的,你可以做到这一点,没有absolute定位,也没有使用tables(带有标记的螺丝等).

演示
经过测试,可以在IE> 7,chrome,FF上进行测试,这是一个非常容易添加到现有布局的东西.

Some content you don't want affected by the "bottom floating" div
supports not just text
Some other content you want kept to the bottom
this is in a div
#container {
    height:100%;
    border-collapse:collapse;
    display : table;
}

.foot {
    display : table-row;
    vertical-align : bottom;
    height : 1px;
}

float:bottom即使考虑到@Rick Reilly的回答中指出的问题,它也能有效地做到这一点!


你也可以使用flexbox - http://stackoverflow.com/questions/526035/html-css-positioning-float-bottom/27812717#27812717
我发现`.foot {display:table-footer-group}`有更多的运气.我不需要`vertical-align`,`height`或`border-collapse`.

5> avrahamcool..:

这是一个古老的问题,但这是一种独特的方法,可以在几种情况下提供帮助.

纯CSS,无绝对定位,无需修复任何高度,跨浏览器(IE9 +)

看看工作小提琴

因为正常的流量是"从上到下",我们不能简单地要求#copyrightdiv坚持他父母的底部而没有绝对的某种定位,但是如果我们想让#copyrightdiv坚持他父母的顶部,那么将非常简单 - 因为这是正常的流动方式.

所以我们将利用这个优势.我们将改变divHTML中s 的顺序,现在#copyrightdiv位于顶部,内容立即跟随它.我们还使内容div一直延伸(使用伪元素和清除技术)

现在只是在视图中反转该顺序的问题.这可以通过CSS转换轻松完成.

我们将容器旋转180度,现在:向上 - 向下.(我们将内容反转回来看起来正常)

如果我们想在内容区域中有一个scroolbar,我们需要应用更多的CSS魔法.可以显示在这里 [在那个例子中,内容低于标题 - 但它的想法相同]

* {
  margin: 0;
  padding: 0;
}

html,
body,
#Container {
  height: 100%;
  color: white;
}

#Container:before {
  content: '';
  height: 100%;
  float: left;
}

#Copyright {
  background-color: green;
}

#Stretch {
  background-color: blue;
}

#Stretch:after {
  content: '';
  display: block;
  clear: both;
}

#Container,
#Container>div {
  -moz-transform: rotateX(180deg);
  -ms-transform: rotateX(180deg);
  -o-transform: rotate(180deg);
  -webkit-transform: rotateX(180deg);
  transform: rotateX(180deg);
}
Element 1
Element 2


6> Gary Green..:

试试这个;



7> Rápli András..:

div为上面的元素创建另一个容器#copyright.在版权之上添加一个新的div:

它将强制页脚在其他所有内容之下,就像使用相对定位(bottom:0px;)的情况一样.



8> Skippy le Gr..:

尽管此处提供的答案似乎都不适用于我的特定情况,但我遇到了提供此整洁解决方案的这篇文章:

#container {
  display: table;
}

#copyright {
  display: table-footer-group;
}

我发现这对于将响应式设计应用于移动显示非常有用,而不必重新排序网站的所有html代码,body而是将自身设置为表格。

请注意,只有第一个table-footer-grouptable-header-group会这样渲染:如果有多个,则其他将被渲染为table-row-group

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有