【问题标题】:How to make the footer positioned at the bottom of all screen sizes when you have different height pages?当您有不同高度的页面时,如何使页脚位于所有屏幕尺寸的底部?
【发布时间】:2017-05-02 08:10:46
【问题描述】:

我正在尝试制作一个粘性页脚,但由于某种原因它正在播放。 当我在其中一个上设置页脚时,我有几页具有不同内容高度的页面,它会破坏其他页面。 如何为所有页面创建全局样式,以便在页面底部有一个粘性页脚,并且如果不需要它还删除任何滚动,因为我的某些页面需要滚动才能到达页脚,而内容大约有高度。

当我使用一个名为 screen-fly 的网站来测试我的网站以在所有屏幕尺寸上进行测试时,我需要一个能够保证在任何屏幕尺寸上进行响应式设计的解决方案。

我的代码在 plunker 上可用,但是我进行了很多研究并尝试了一些样式解决方案。这是其中的两个

解决方案 1:-

/* **************************************************/
                      /* One solution */
    html, body {
      height:100%;
      min-height:100%;
  }
                      /*  navigation style*/
  .navbar-brand {
    margin: 0 auto;
    color:white;
  }
  .navbar-inverse {
    background: rgb(14, 78, 114);
  }
  .navbar-inverse .navbar-nav>li>a {
    color: #8EE8CD;
  }

  /* Content style*/
  .container.content {
    margin-top: 100px;
  }

                      /*  footer style*/
  .wrapper {
      position:relative;
      min-height:100%;
  }
  footer {
      text-align: center;
      position:absolute;
      bottom:0px;
      width:100%;
      color: white;
     background-color: rgb(14, 78, 114);
  }

溶液 2:-

/*   Another solution */

  html, body {height: 100%;}

  #wrap {min-height: 100%;}

  #main {overflow:auto;
    padding-bottom: 150px;}  /* must be same height as the footer */

  #footer {position: relative;
    margin-top: -150px; /* negative value of footer height */
    height: 150px;
    clear:both;} 

  /*Opera Fix*/
  body:before {
    content:"";
    height:100%;
    float:left;
    width:0;
    margin-top:-32767px;
  }

这里是代码的一些链接。

plunker 编辑器:Plunker Editor

plunker 全屏:Plunker Full Screen

我在 screenfly 上的网站:Screenfly Site

【问题讨论】:

  • 你试过display: fixed; bottom: 0; left: 0; right: 0;吗?
  • .container.content {margin-top: 100px;} 更改为.container.content {padding-top: 100px;}
  • 非常感谢这里的每一个人,你们真的是一个非常有帮助的社区,但是,Saurav Rastogi 给出了一个非常简单的答案,因为我之前没有使用过 flexbox(一定会看看)我也要感谢 Neil Smith 和 SvenL。

标签: html css twitter-bootstrap responsive-design footer


【解决方案1】:

尝试溢出:隐藏;身体。

【讨论】:

    【解决方案2】:

    这是许多人试图解决的常见问题。在很长一段时间内,它要么需要妥协,要么需要一些 hacky CSS。值得庆幸的是,随着 Flexbox 的出现,它实际上相当容易。检查下面的链接。

    https://philipwalton.github.io/solved-by-flexbox/demos/holy-grail/

    此页面将介绍如何使用 Flexbox 解决您遇到的问题,并将引导您完成它。

    【讨论】:

      【解决方案3】:

      更改页脚样式

      position: absolute;
      

      position: fixed;
      

      希望这是您想要实现的目标:)

      【讨论】:

      • 如果内容超过一页,那将无法正常工作,因为页脚会出现在第一页上,并且当你滚动时会一直出现在底部,但我希望它位于内容的末尾仅限。
      【解决方案4】:

      使用 CSS calc() 函数。根据您的 plunkr 示例,将 min-height 赋予.container.content 而不是将min-height 赋予html, body, wrapper

      查看更新后的Plunkr


      逻辑曾经给min-height

      .container.content {
        min-height: calc(100vh - 140px);
      }
      

      在上面的代码中:

      • vh:视口高度(100vh 给出屏幕总高度)
      • 140px100px 用于页眉 + 20px 用于页脚 + 20px 用于页脚的上边距。

      所以我们只是从总视口高度中减去 divs 的其余部分。

      【讨论】:

      • 这是我的荣幸@shireefkhatab
      • 非常感谢 Saurav,是的,它现在可以在任何屏幕上运行,这里是 screenfly 链接quirktools.com/screenfly/#u=https%3A//run.plnkr.co/…
      • @shireefkhatab 已修复!再次检查我的答案中的链接。 - quirktools.com/screenfly/#u=https%3A//plnkr.co/…
      • 当你只复制/粘贴全屏链接而不使用编辑器时,它会更好,根本不显示滚动
      • 如果我的所有边距和高度都是百分比或 ems 而不是像素,你能告诉我我是否应该遵循同样的方式。你能给我一个例子吗?赞赏
      【解决方案5】:

      对于这些情况,我会使用 Flexbox。这使您能够完全删除您的包装 div .wrapper

      要实现您想要的,只需将以下代码添加到您的 CSS 中

      body {
        display: flex;
        flex-direction: column;
      }
      

      并更改页脚 div 的 CSS,在您的情况下将 footer 更改为此

      footer {
        margin-top: auto;
        text-align: center;
        color: white;
        background-color: rgb(14, 78, 114);
      }
      

      【讨论】:

      • 我不知道 flexbox 你有链接吗?
      • 当然。关于这个主题有很多很棒的文章,例如this one
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 2021-05-21
      • 1970-01-01
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多