Footer 하단에 고정하기

✒️ 2025-05-16 12:37 내용 수정


React 구조에 적용하기

import Header from './components/Header.js';
import Footer from './components/Footer.js';
import Main from './pages/Main.js'

function App() {
	return (
		<div className='app-wrapper'>
			<Header/>
			<div className='content-wrapper'>
				<Routes>
					<Route path="/" element={<Main/>}/>
				</Routes>
			</div>
			<Footer/>
		</div>
	);
}

export default App;
  1. 가장 큰 div인 app-wrapper의 경우 display: flexflex-direction: column을 적용하여 하위 태그들이 세로로 쌓이도록 적용한다.
.app-wrapper{
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}
  1. 내부 div인 content-wrapper의 경우 flex: 1을 적용하여 Flex container 내의 모든 남은 공간을 균등하게 나누어 차지하도록 설정한다.
    • flex: 1flex-grow, flex-shrink, flex-basis 속성을 한 번에 설정한다.
      • flex-grow: 1 : Flex container 내 아이템이 남은 공간을 차지하도록 확장하며, 다른 아이템들과 공간을 균등하게 나눈다.
      • flex-shrink: 1 : Flex container가 작아지면 container 내의 아이템을 필요에 따라 축소 시킨다.
      • flex-basis: 0 : Flex container 내의 아이템의 기본 크기를 0으로 설정하여 아이템이 공간을 차지하는 기준을 지정한다.
.content-wrapper{
	flex: 1;
}
  1. header는 뷰포트 상단에 항상 고정시키기 위해 position: sticky를 적용한다.
.header{
	position: sticky; top: 0px;
	padding: 4px 0;
	background-color: white; z-index: 1000;
}
  1. footer는 다른 component과 겹치는 것을 방지하면서 적당한 간격을 두기 위해 margin만 설정했다.
.footer{
	margin-top: 50px;
}

footer고정 1.png

footer고정 2.png