用flex布局实现Sticky Footers
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用flex布局实现Sticky Footers相关的知识,希望对你有一定的参考价值。
参考技术A Sticky Footer 布局是在开发中经常会用到的一种布局,它的效果简而言之就是当内容的高度小于屏幕的高度时,footer组件会停留在屏幕的最下方,但如果内容高度大于屏幕高度,则footer会被推到内容的最下方.本文将讨论如何使用flex布局来解决这个问题。这里采用了flex布局, flex-flow:column 定义了纵向布局, min-height:100vh 定义了body的最小高度是100%的视窗高度。 .main 中的样式 flex 属性是flex-grow,flex-shrink和flex-basis的简写,分别代表项目的放大比例(默认0),项目的缩小比例(默认1)和项目在分配多余空间之前占据的主轴空间(默认auto,即项目的原大小),这里 flex:1 等同于 flex:1 1 0% ,如果其他项目的flex都是 flex:1 ,则会等分剩余空间。但假如 <footer> 设置了 flex:2 ,那么页脚的高度将会是主内容高度的2倍。总的来说,为了实现sticky footer, min-height 和 flex 的定义缺一不可。
Flex实现水平竖直居中布局
传统的布局使用的是“盒模型”加上display、position和float属性,但是对于一些特殊的布局实现例如居中却是比较麻烦,所以,为了解决一些复杂的布局问题,一种更为灵活的布局方式出现了,那就是Flex布局。
Flex 即为Flexible Box,指的是“弹性布局”,它可以为盒模型提供更加灵活的布局方式,例如,用flex可以优雅地实现水平竖直居中的布局。
例如下面这个例子,我们想做的是让child元素在parent里面水平竖直居中:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Demo</title> </head> <body> <div class="parent"> <div class="child"></div> </div> </body> </html>
把parent的display设为flex,使其变成父容器父元素(flex container),然后把child的margin设为auto,这样child元素就可以在其父元素内水平竖直居中了,完整代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Demo</title> <style> body { padding: 0; margin: 0; } .parent { display: flex; height: 400px; background-color: black; } .child { width: 100px; height: 100px; margin: auto; background-color: white; } </style> </head> <body> <div class="parent"> <div class="child"></div> </div> </body> </html>
更多关于Flex的介绍可参见阮一峰的博客:Flex 布局教程。
本文地址:http://www.cnblogs.com/zeakhold/
以上是关于用flex布局实现Sticky Footers的主要内容,如果未能解决你的问题,请参考以下文章