遇到问题如图h5 在编辑时 底部按钮弹起
解决方案 flex
解决该问题的最好方法是采用 flexbox——CSS3提供的一种先进布局模型,旨在建立具有适应性的布局。如果你对 flexbox 还不怎么熟悉,文章最后有一些扩展阅读链接,可以帮助你了解 flexbox。
我们的演示页面应该具备 Header、主体内容区域和 Footer,下面是该页面的 HTML
1 2 3 4 5 | <body> <header>...</header> <section class="main-content">...</section> <footer>...</footer> </body> |
为了启用 flex模式,我们将 body 的 display 属性设置为 flex, 然后将方向属性设置为列, (默认是行,也就是横向布局)。同时,将html 和 body 元素的高度设置为100%,使其充满整个屏幕。
1 2 3 4 5 6 7 8 9 | html{ height: 100%; } body{ display: flex; flex-direction: column; height: 100%; } |
现在,我们需要调整各个区域占用的页面空间,我们将通过flex 属性来达到这一目的,该属性实际包含了三个参数,分别是:
- flex-grow:元素在同一容器中对可分配空间的分配比率,及扩展比率
- flex-shrink:如果空间不足,元素的收缩比率
- flex-basis:元素的伸缩基准值
我们希望 header 和footer 只占用他们应该占用的空间,将剩余的空间全部交给主体内容区域
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | header{ /* 我们希望 header 采用固定的高度,只占用必须的空间 */ /* 0 flex-grow, 0 flex-shrink, auto flex-basis */ flex: 0 0 auto; } .main-content{ /* 将 flex-grow 设置为1,该元素会占用所有的可使用空间 而其他元素该属性值为0,因此不会得到多余的空间*/ /* 1 flex-grow, 0 flex-shrink, auto flex-basis */ flex: 1 0 auto; } footer{ /* 和 header 一样,footer 也采用固定高度*/ /* 0 flex-grow, 0 flex-shrink, auto flex-basis */ flex: 0 0 auto; } |
最终的效果如下图所示。通过点击中央的粉红按钮改变主体内容,footer 会始终显示在页面的最底部。