CSS Layout

CSS의 레이아웃 정리

<body>
  <!-- Block-level-->
  <div>div</div>
  <div>div</div>
  <div>div</div>

  <!--Inline-level-->
  <span>span</span>
  <span>span</span>
  <span>span</span>
</body>
div, span{
  width:80px;
  height:80px;
  margin:20px;

div{
  background:red;
}

span{
  background:blue;
}

위와 같이 코드를 작성하여, 아래처럼 박스를 만들었다.

1. Display

(1) display:block

span {
  background: blue;
  display: block;
}

Inline-level인 span에 display:block;을 주게 되면 블록(상자)처럼 상하로 배치된다.

(2) display:inline-block

div {
  background: red;
  display: inline-block;
}

Block-level인 div에 display:inline-block;을 주게 되면 글자,상자의 특징을 모두 가져 한 줄에 여러개가 반영된다.

(3) display:inline

div {
  background: red;
  display: inline;
}

Block-level인 div에 display:inline;을 주게 되면 글자처럼 좌우로 배치된다.

2. Position

<body>
  <article class="container">
    <div></div>
    <div class="box">BOX</div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
</body>
div {
  width: 50px;
  height: 50px;
  margin-bottom: 20px;
  background: red;
}

.container {
  background: green;
  left: 20px;
  top: 20px;
}

.box {
  background: blue;
}

위와 같이 코드를 작성하여, 아래처럼 박스를 만들었다.

container에 left와 top에 값을 주어도 컨테이너의 이동이 없음을 알 수 있다.

이는 position에 기본으로 container에 left와 top에 값을 주어도 position에 static를 기본값으로 갖고 있기 때문이다.

(1) position: relative

.container {
  background: green;
  left: 20px;
  top: 20px;
  position: relative;
}

컨테이너position에 relative를 주니 left값과 top값이 적용된 것을 볼 수 있다.

.box {
  background: blue;
  left: 20px;
  top: 20px;
  position: relative;
}

박스 position에 relative값을 주니, 원래 있어야 할 자리에서 left와 top값인 20px씩 옮겨 간 것을 볼 수 있다.

(2) position: absolute

.box {
  background: blue;
  left: 20px;
  top: 20px;
  position: absolute;
}

박스 position에 absolute값을 주면 상위 요소와 가까운 박스 안에서 위치변경이 일어나게 된다.

(3) position: fixed

.box {
  background: blue;
  left: 20px;
  top: 20px;
  position: fixed;
}

박스 position에 fixed값을 주면 설정한 container 를 벗어나 윈도우를 기준으로 설정한 값의 위치변경이 일어나게 된다.

(4) position: sticky

background:blue;
  left:20px;
  top:20px;
  position:sticky;
}

박스 position에 sticky값을 주면 원래 있어야 할 자리에 있으면서, 스크롤링 되어도 없어지지 않고 , 원래 자리에 고정되게 된다.