html - 当使用 CSS 动态更改页面高度时,将页脚保留在页面底部

标签 html css sticky-footer

有很多主题提供了将页脚保持在页面底部的解决方案。但是,我正在努力让它发挥作用。

问题是页面可以动态改变它的高度。

the current solution I'm using ,页脚位于页面底部。但是,当页面高度动态变化时,页脚仍保持在其准确位置。

页脚的CSS如下:

#footer {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
}

htmlbody 标签具有以下规则:

html, body {
    min-height: 100%;
    height: 100%;
}

请参阅下面的代码片段以获取可视化演示(最好在全窗口模式下使用)

$(document).ready(function() {
  
  var button = $("#addContent");
  var lorem = "<p>Proin cursus odio quis neque porttitor pretium. Duis cursus dolor mi, quis blandit eros dictum vitae. Mauris tempus turpis non leo commodo sagittis ac ac urna. Vivamus aliquet euismod posuere. Suspendisse at semper mauris. Phasellus blandit convallis tincidunt. Maecenas elementum ullamcorper risus, a vestibulum ex accumsan sed. Nulla facilisi.</p><p>Proin cursus odio quis neque porttitor pretium. Duis cursus dolor mi, quis blandit eros dictum vitae. Mauris tempus turpis non leo commodo sagittis ac ac urna. Vivamus aliquet euismod posuere. Suspendisse at semper mauris. Phasellus blandit convallis tincidunt. Maecenas elementum ullamcorper risus, a vestibulum ex accumsan sed. Nulla facilisi.</p><p>Proin cursus odio quis neque porttitor pretium. Duis cursus dolor mi, quis blandit eros dictum vitae. Mauris tempus turpis non leo commodo sagittis ac ac urna. Vivamus aliquet euismod posuere. Suspendisse at semper mauris. Phasellus blandit convallis tincidunt. Maecenas elementum ullamcorper risus, a vestibulum ex accumsan sed. Nulla facilisi.</p><p>Proin cursus odio quis neque porttitor pretium. Duis cursus dolor mi, quis blandit eros dictum vitae. Mauris tempus turpis non leo commodo sagittis ac ac urna. Vivamus aliquet euismod posuere. Suspendisse at semper mauris. Phasellus blandit convallis tincidunt. Maecenas elementum ullamcorper risus, a vestibulum ex accumsan sed. Nulla facilisi.</p>";
  
  button.click(function() {
    
    $("main button").before(lorem);
    
  });
  
});
* {
  box-sizing: border-box;
}

body {
  margin: 0;
}

header {
  background: #333;
  color: #fff;
  padding: 25px;
}

main {
  padding: 25px;
}

main h3 {
  margin-top: 0;
}

code {
  background: #f1f1f1;
  padding: 0 5px;
}

footer {
  position: absolute;
  background: #ededed;
  padding: 25px;
  color: #000;
  right: 0;
  bottom: 0;
  left: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<header>
  <p>Just a sample header</p>
</header>

<main>
  <h3>Some sample content</h3>
  <p>Click on the <code>button</code> to see what i mean.</p>
  <p>When the <code>heigth</code> of the page dynamically changes, the <code>footer</code> will stay at its exact position.</p>
  <button id="addContent">Click to add more content</button>
</main>

<footer>
  <p>The footer</p>
</footer>

如何让 CSS 知道高度发生了变化?并将页脚保留在文档底部,而不是停留在窗口底部

最佳答案

首先,如果你想使用position: absolute,那么父级应该不是初始位置,比如position: relative,否则它会看起来第一个相对定位的父元素。因此,如果您将 position: relative 添加到 body,页脚将是动态的。

但是绝对定位的元素完全从文档流中移除,所以在这种情况下它会重叠在其他元素上,但是我们可以通过添加transform: translateY(100%)来解决。 p>

最后你会得到:

body {
    margin: 0;
    position: relative;
}

footer {
    position: absolute;
    background: #ededed;
    padding: 25px;
    color: #000;
    right: 0;
    bottom: 0;
    left: 0;
    transform: translateY(100%);
}

关于html - 当使用 CSS 动态更改页面高度时,将页脚保留在页面底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45501890/

相关文章:

html - IE11 上的 Flexbox : image stretched for no reason?

css - 带有页眉和页脚以及 100% 内容 div 的网页

javascript - 是否可以在上面有一个带有可滚动内容区域的自动高度 div 页脚?

javascript - 如何在手机浏览器中始终显示垂直滚动条

javascript - 为什么更改选项卡时 Canvas 动画有时会失败?

html - 在 XSL 中提取连续 sibling

html - 如何通过编辑html代码防止文件被盗?

html - 根据 slider (复选框)选择显示/隐藏 div

css - 奇怪的页脚行为

android - CSS3 变换的 rotate3D 在 Android 中不起作用