zoukankan      html  css  js  c++  java
  • 一个将 footer 保持在底部的最好方法

    原文: Quick Tip: The Best Way To Make Sticky Footers

    当你在布局网页时,有可能会遇到类似下面的这种情况

    导致这一问题的原因是页面内容太少,无法将内容区域撑开,从而在 footer 下面留下一大块空白。

    本文将介绍一种现代化的方法,确保 footer 始终处于页面的底部。

    解决方法

    解决该问题的最好方法是采用 flexbox——CSS3提供的一种先进布局模型,旨在建立具有适应性的布局。如果你对 flexbox 还不怎么熟悉,文章最后有一些扩展阅读链接,可以帮助你了解 flexbox。

    我们的演示页面应该具备 Header、主体内容区域和 Footer,下面是该页面的 HTML

    <body>
        <header>...</header>
        <section class="content">...</section>
        <footer>...</footer>
    </body>

    为了启用 flex模式,我们将 body 的 display 属性设置为 flex, 然后将方向属性设置为列, (默认是行,也就是横向布局)。同时,将html 和 body 元素的高度设置为100%,使其充满整个屏幕。

    html{
        height: 100%;
    }
    body{
        display: flex;
        flex-direction: column;
        height: 100%;
    }

    现在,我们需要调整各个区域占用的页面空间,我们将通过flex 属性来达到这一目的,该属性实际包含了三个属性,分别是:

    • flex-grow:元素在同一容器中对可分配空间的分配比率,及扩展比率
    • flex-shrink:如果空间不足,元素的收缩比率
    • flex-basis:元素的伸缩基准值

    我们希望 header 和footer 只占用他们应该占用的空间,将剩余的空间全部交给主体内容区域

    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 会始终显示在页面的最底部。

    结论

    如你说见,如果是从零开始构建布局,flexbox 将会是你的得力助手。除了极少数的例外,所有的主流浏览器都支持 flexbox,就 IE 来说,IE9以后的版本都是支持的。

     

  • 相关阅读:
    Python 类中方法的内部变量,命名加'self.'变成 self.xxx 和不加直接 xxx 的区别
    用foreach遍历 datagridView 指定列所有的内容
    treeView1.SelectedNode.Level
    YES NO 上一个 下一个
    正则 单词全字匹配查找 reg 边界查找 精确匹配 只匹配字符 不含连续的字符
    抓取2个字符串中间的字符串
    sqlite 60000行 插入到数据库只用不到2秒
    将多行文本以单行的格式保存起来 读和写 ini
    将秒转换成时间格式
    richtextbox Ctrl+V只粘贴纯文本格式
  • 原文地址:https://www.cnblogs.com/tgxh/p/6136057.html
Copyright © 2011-2022 走看看