使用 CSS-Grid #gatsby-focus-wrapper、#___gatsby 将页脚保持在底部 { #gatsby-focus-wrapper 和 #___gatsby 是隐藏的 div,gatsby 将其注入到 html 和 body 标签之间的 DOM 中。

2025-05-25

使用 CSS-Grid 将页脚保持在底部

#gatsby-focus-wrapper,

#___盖茨比{

#gatsby-focus-wrapper 和 #___gatsby 是隐藏的 div,gatsby 将其注入到 html 和 body 标签之间的 DOM 中。

标题图片

在项目进行到某个阶段,你可能会因为页脚悬停在页眉正下方而感到烦躁,因为还没有内容填满这个空间。此外,可能还会有一些非常短的页面(例如 404 错误),它们的长度可能不足以填满整个浏览器。

使用 CSS-Grid 将页脚保持在浏览器底部变得更容易了。可以使用一些 CSS 技巧、Flexbox 或 JS,但我认为 Grid 解决方案是最优雅、最简洁的。

请注意,截至撰写本文时,此方法仅支持现代浏览器。好消息是,此方法不会破坏旧版浏览器的任何功能。

HTML 结构如下:

<html>
    <body>
        <article>
            <header>
            </header>
            <main>
            </main>
            <footer>
            </footer>
        </article>
    </body>
</html>
Enter fullscreen mode Exit fullscreen mode

与一些实际项目相比,这可能稍微简化了一些。重要的是将主内容区域 (main) 和页脚 (footer) 保持在同一个父元素中。

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

article {
    min-height: 100%;
    display: grid;
    grid-template-rows: auto 1fr auto;
    grid-template-columns: 100%;
}
Enter fullscreen mode Exit fullscreen mode

重点是“grid-template-rows”属性。在这里,我们告诉浏览器,我们希望“article”的第一个子元素的高度与其自然高度一致(“auto”)。第二个子元素的高度应该为fr,这意味着它会尽可能高,因为其中没有其他fr元素。第三个子元素的高度也与自然高度一致。

不要忘记将 html 和 body 元素设置为 100% 高度,否则您的网格容器将无法填满整个浏览器。

这是 CodePen 上的工作示例。

如果你还不知道的话:CSS-Grid 现在已支持所有现代浏览器。它是一种定义页面布局及其他功能的便捷方式。快去看看 Wes Bos 的免费课程吧。

补充:
您可以使用 Flexbox 实现同样的效果。如果您现在(2018 年 1 月)需要此功能,这将是一个更广泛支持的方式。请查看 Dominik Weber 的文章“使用 CSS Flexbox 将页脚保持在底部”

更新:
Firefox 52 支持网格布局,但存在一些 bug,尤其是在这个例子中。元素无法保持其自然高度。因此,如果您需要支持 Firefox 52,请使用 Flexbox 解决方案。

文章来源:https://dev.to/niorad/keeping-the-footer-at-the-bottom-with-css-grid-15mf
PREV
像专业人士一样删除 node_modules
NEXT
5 个实用的 VSCode 实时编码扩展