프론트엔드/CSS

flex 로 블로그 레이아웃 만들기

syleemomo 2021. 11. 4. 21:02
728x90

 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <link rel="stylesheet" href="style.css" />
    <title>Flexbox</title>
  </head>
  <body>
    <div id="container">
      <div id="header">header</div>
      <div id="body">
        <div id="sidebar">sidebar</div>
        <div id="contents">contents</div>
      </div>
      <div id="footer">footer</div>
    </div>
  </body>
</html>
body {
  padding: 0;
  margin: 0;
  text-align: center;
}
#container {
  width: 100%;
  height: 100vh;
  display: flex;
  flex-direction: column;
  background: tomato;
}
#header,
#sidebar,
#contents,
#footer {
  background: skyblue;
  margin-bottom: 5px;
}
#header {
  height: 50px;
}
#body {
  display: flex;
  flex-grow: 1;
}
#sidebar {
  width: 400px;
  flex-shrink: 0;
  margin-right: 5px;
}
#contents {
  flex-grow: 1;
}
#footer {
  height: 100px;
}

@media screen and (max-width: 1200px) {
  #sidebar {
    width: 20%;
  }
}

블로그 레이아웃 웹화면
블로그 레이아웃 갤럭시 S5
블로그 레이아웃 아이폰 6/7/8 Plus

실제로는 모바일에서 사이드바는 사라지고 컨텐츠만 보인다. 사이드바는 메뉴를 클릭하면 보여준다. 

 

아이템의 내부 컨텐츠도 플럭스박스를 이용하여 중앙에 정렬이 가능하다. 

body{
  margin: 0;
  padding: 0;
  text-align: center;
}
#container{
  width: 100%;
  height: 100vh;
  display: flex;
  flex-direction: column;
  background: tomato;
}
#header, #sidebar, #contents, #footer{
  background: skyblue;
  margin-bottom: 5px;
}
#header{
  height: 50px;
  line-height: 50px;
}
#body{
  display: flex; /* contents 와 sidebar 를 가로정렬 */
  flex-grow: 1;
}
#sidebar{
  width: 400px;
  flex-shrink: 0; /* 컨테이너가 줄어들어도 사이드바 너비는 줄어들지 않음 */
  margin-right: 5px;

 /* 내부 컨텐츠 중앙정렬 */
  display: flex;
  justify-content: center;
  align-items: center;
}
#contents{
  flex-grow: 1;

  /* 내부 컨텐츠 중앙정렬 */
  display: flex;
  justify-content: center;
  align-items: center;
}
#footer{
  height: 100px;
  line-height: 100px;
}

/* 모바일에서도 반응형 웹으로 사이트 레이아웃이 깨지지 않고 잘 보이도록 함 */
@media screen and (max-width: 1200px){
  #sidebar{
    width: 20%;
  }
}
728x90