需求
我们先看一下底部 copyright 有什么特点:
- 页面底部居中。
- 如果内容不满,则直接出现在页面底部。
- 如果内容充满需要滑动,则滑动到底部后出现。
实现
首先介绍一下 flex,flex-direction,flex-grow:
- flex 布局又称弹性布局,它能给 flexbox 的子元素之间提供了强大的空间分布和对齐能力。
- flex-direction 属性决定主轴的方向(即项目的排列方向)。
- flex-grow 定义子元素的放大比例。
- 如果为 0,表示不放大。
- 如果子元素都为 1,则子元素平分剩余空间。
- 如果一个项目的 flex-grow 属性为 2,其他项目都为 1,则前者占据的剩余空间将比其他项多一倍。
因此,我们的思路如下:
- 父元素 content,定义为一个 flexbox,且 flex-direction 为 column(纵向排列子元素)。
- 子元素 content-main,设置 flex-grow 为 1。
- 子元素 content-copyright,设置 flex-grow 为 0(默认值)。
核心代码
.content {display: flex;flex-direction: column;}.content-main {flex-grow: 1;}.content-copyright {flex-grow: 0;text-align: center;}
完整代码参考
<!DOCTYPE html><head><style>html,body {margin: 0;padding: 0;width: 100%;height: 100%;}.content {display: flex;flex-direction: column;width: 100%;height: 100%;overflow: scroll;}.content-main {flex-grow: 1;background-color: lightblue;}.content-copyright {flex-grow: 0;text-align: center;background-color: lightgreen;}</style></head><body><div class="content"><div class="content-main"><!-- 如果没有任何内容,则会占满;否则会滚动 --><div style="height: 150vh"></div></div><div class="content-copyright">copyright</div></div></body>
参考资料
- Flex 布局 by MDN https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox
- Flex 布局 by 阮一峰 http://ruanyifeng.com/blog/2015/07/flex-grammar.html
[END]
