粘页脚显示

时间:2019-03-14 17:23:14

标签: html css sticky

我有一些在标题上方滑动的部分。
但是我需要最后一部分来揭示页脚。

在这种情况下可以不用JavaScript来显示页脚吗?

html,
body,
* {
  padding: 0;
  margin: 0;
}

html,
body {
  width: 100%;
  height: 100%;
}

.container {
  height: 100%;
  margin-top: 300px;
  margin-bottom: 300px;
}

.header {
  height: 100vh;
  background: tomato;
  position: fixed;
  width: 100%;
  z-index: 1;
  top: 0;
}

.section1,
.section2,
.section3 {
  height: 100vh;
  z-index: 10;
  position: relative;
}

.section1 {
  background: orange;
}

.section2 {
  background: purple;
}

.section3 {
  background: red;
}

.footer {
  height: 10vh;
  position: fixed;
  bottom: 0;
  width: 100%;
  background: aquamarine;
}
<div class="container">
  <div class="header">
    header
  </div>

  <div class="section1">
    section 1
  </div>

  <div class="section2">
    section 2
  </div>

  <div class="section3">
    section 3
  </div>
</div>

<div class="footer">
  footer
</div>

View on JS Bin

3 个答案:

答案 0 :(得分:1)

页脚不显示的原因是,它的z索引比其他部分的索引低。但是,如果您为.footer类提供比其他部分更高的z-index,则它始终显示在底部,因为它的样式为position: fixed

一种可能的解决方案是为页脚提供与其他节相同的z-index,将其位置更改为relative,并将其包含在.container类中。

这看起来像:

html,
body,
* {
  padding: 0;
  margin: 0;
}

html,
body {
  width: 100%;
  height: 100%;
}

.container {
  height: 100%;
  margin-top: 300px;
  margin-bottom: 300px;
}

.header {
  height: 100vh;
  background: tomato;
  position: fixed;
  width: 100%;
  z-index: 1;
  top: 0;
}

.section1,
.section2,
.section3,
.footer {
  height: 100vh;
  z-index: 10;
  position: relative;
}

.section1 {
  background: orange;
}

.section2 {
  background: purple;
}

.section3 {
  background: red;
}

.footer {
  height: 10vh;
  position: relative;
  bottom: 0;
  width: 100%;
  background: aquamarine;
}
<div class="container">
  <div class="header">
    header
  </div>
  <div class="section1">
    section 1
  </div>
  <div class="section2">
    section 2
  </div>
  <div class="section3">
    section 3
  </div>
  <div class="footer">
    footer
  </div>
</div>

JS Bin

答案 1 :(得分:0)

尝试放置:

z-index: 11;

因为在另一个容器中有z-index,这就是为什么看不到页脚的原因

答案 2 :(得分:0)

您可以考虑使用position:sticky

  

粘性定位元素是其计算位置的元素   价值是粘性的。直到它被定位为相对位置   包含块超过了指定的阈值(例如将top设置为   在其流根(或其容器)中的值(不是auto)   在其中滚动),这时它被视为“卡住”,直到见面为止   其包含块的相对边缘。

但是,考虑使用browser compatibility
在撰写本文时,IE不支持“粘性”定位。

这是一个示范:

body {
  margin: 0;
}

.header {
  position:-webkit-sticky;
  position: sticky;
  background: tomato;
  height: 100vh;
  top: 0;
}

.section1,
.section2,
.section3 {
  height: 100vh;
  position: relative;
}

.section1 {
  background: orange;
}
.section2 {
  background: purple;
}
.section3 {
  background: red;
}

.footer {
  position:relative;
  height: 10vh;
  background: aquamarine;
}
<div class="header">
  header
</div>
<div class="section1">
  section 1
</div>
<div class="section2">
  section 2
</div>
<div class="section3">
  section 3
</div>
<div class="footer">
  footer
</div>