具有 Bootstrap 的 React 组件的页面布局 - 页脚未保留在原位
Page layout for React component with Bootstrap - footer not remaining in place
提前感谢您的时间和关注。这里是新手开发人员,试图完成 React 组件的布局。我正在使用 bootstrap 并根据需要添加 css。该组件本质上是一个单列页面,其中包含一个动态呈现内容的主要子组件。我的问题是,当动态组件的高度不足以将页脚推到那里时,我无法让页脚保留在页面底部。当动态组件呈现一定数量的子项时,页脚位置正确,但这只是因为它被推到页面底部。我已附上截图来演示。
我目前解决这个问题的策略是尝试使用 spacer 通过 flex-grow 将页脚推到视口的底部 属性 但是当我需要它。关于我到目前为止所做的尝试,我广泛阅读了有关堆栈溢出的文章,并且我已经断断续续地研究了几天,并且我已经尝试了几次不同 css 属性的迭代和 Bootstrap classes,包括 margin-top-auto,各种位置设置和其他。我正在为这个撕掉我剩下的几根头发,非常感谢任何帮助。部分相关代码如下:
App.js
return (
<div className="d-flex flex-column">
<Header />
<SearchBar data={state} handler={filterRes} />
<CurrencyContainer
loading={loading}
error={error}
errorMessage={errorMessage}
data={data}
pagData={currentPageData}
/>
{!loading && data.length > 25 && !error && (
<PaginationComp pageCount={pageCount} clickHandler={handlePageClick} />
)}
<div className="spacer flex-grow">spacer</div> //The spacer is here for now but I'll move this into a component when I get it working
<Footer />
</div>
);
}
我还尝试通过 class 名称添加 .css 属性,这些属性显示在控制台中,但不影响页面的显示。
我应用的当前 css 属性如下,尽管如我所说,我尝试了各种组合都没有效果。
body {
display: flex;
flex-direction: column;
height: 100%;
align-content: stretch;
}
.spacer {
background-color: lightgreen;
flex-grow: 3;
}
footer {
width: 100%;
height: 150px;
background-color: var(--blue-yonder-light);
border-top: var(--blue-yonder) 1px solid;
}
很高兴根据需要提供更多代码。这个问题感觉超级业余,但我已经足够坚持寻求帮助,所以在此先感谢您的任何建议。
好的,所以你是在正确的轨道上。
你不需要任何类型的垫片。
您需要为弹性容器设置最小高度,如下所示。
<div className="d-flex flex-column" style={{min-height: '100vh}}>
这是一个复制最少的例子。 Stakblitz Solution
提前感谢您的时间和关注。这里是新手开发人员,试图完成 React 组件的布局。我正在使用 bootstrap 并根据需要添加 css。该组件本质上是一个单列页面,其中包含一个动态呈现内容的主要子组件。我的问题是,当动态组件的高度不足以将页脚推到那里时,我无法让页脚保留在页面底部。当动态组件呈现一定数量的子项时,页脚位置正确,但这只是因为它被推到页面底部。我已附上截图来演示。
我目前解决这个问题的策略是尝试使用 spacer 通过 flex-grow 将页脚推到视口的底部 属性 但是当我需要它。关于我到目前为止所做的尝试,我广泛阅读了有关堆栈溢出的文章,并且我已经断断续续地研究了几天,并且我已经尝试了几次不同 css 属性的迭代和 Bootstrap classes,包括 margin-top-auto,各种位置设置和其他。我正在为这个撕掉我剩下的几根头发,非常感谢任何帮助。部分相关代码如下:
App.js
return (
<div className="d-flex flex-column">
<Header />
<SearchBar data={state} handler={filterRes} />
<CurrencyContainer
loading={loading}
error={error}
errorMessage={errorMessage}
data={data}
pagData={currentPageData}
/>
{!loading && data.length > 25 && !error && (
<PaginationComp pageCount={pageCount} clickHandler={handlePageClick} />
)}
<div className="spacer flex-grow">spacer</div> //The spacer is here for now but I'll move this into a component when I get it working
<Footer />
</div>
);
}
我还尝试通过 class 名称添加 .css 属性,这些属性显示在控制台中,但不影响页面的显示。
我应用的当前 css 属性如下,尽管如我所说,我尝试了各种组合都没有效果。
body {
display: flex;
flex-direction: column;
height: 100%;
align-content: stretch;
}
.spacer {
background-color: lightgreen;
flex-grow: 3;
}
footer {
width: 100%;
height: 150px;
background-color: var(--blue-yonder-light);
border-top: var(--blue-yonder) 1px solid;
}
很高兴根据需要提供更多代码。这个问题感觉超级业余,但我已经足够坚持寻求帮助,所以在此先感谢您的任何建议。
好的,所以你是在正确的轨道上。 你不需要任何类型的垫片。
您需要为弹性容器设置最小高度,如下所示。
<div className="d-flex flex-column" style={{min-height: '100vh}}>
这是一个复制最少的例子。 Stakblitz Solution