본문 바로가기

FrontEnd/CSS

#2. CSS display 와 position 이해하기 !

반응형

# CSS를 활용하는데 가장 중요한 부분은 display와 position 입니다.
# content와 box들을 어떻게 배치하고, 보여주는지에 따라 웹 페이지의 가독성이 달라지기 때문입니다.
# 같은 content라도 가독성이 좋은 사이트가 더 많은 선택을 받는 것은 당연한 일입니다.
# 이번에 배울 내용은 display와 position을 이해해 웹페이지의 가독성을 높이는 방법입니다.



# 전공자가 이해한 CSS

 




1. Display

display 속성에는 inline, inline-block, block 이 세가지 속성값이 존재합니다.
각각 어떻게 다른지 살펴보겠습니다.

 


 

1) inline

inline은 이미 선헌한 width와 height을 무시하고 content 자체만을 꾸며주는 것을 말합니다.
content의 크기에 맞춰서 변경됩니다. content의 정렬 방향은 가로입니다.

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>

  <div>1234567</div>
  <div>A</div>
  <div>X</div>

</body>
</html>
CSS
div, span {
  width: 80px;
  height: 80px;
  margin:20px;
}

div {
  background: green;
  display: inline;
  color: white;
}

 


 

2) inline-block

inline block은 말 그대로 한 줄에 inline처럼 여러 박스를 넣고, block처럼 content의 사이즈와 상관없이 정의한 내용대로 크기를 설정하는 것을 말합니다.

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <div>1</div>
  <div>2</div>
  <div>3</div>
</body>
</html>
div, span {
  width: 80px;
  height: 80px;
  margin:20px;
}

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

 


 

3) block

block은 정의한 내용대로 크기를 설정하고 한 줄에 하나의 content가 들어가도록 합니다.

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <div>1</div>
  <div>2</div>
  <div>3</div>
</body>
</html>
div, span {
  width: 80px;
  height: 80px;
  margin:20px;
}

div {
  background: green;
  display: block;
}

 




2. Position

position은 relative, absolute 등의 속성값을 이용해 원하는 위치에 박스를 이동시킬 수 있습니다.
아래의 html 을 기준으로 relative, absolute, fixed, stickey 등을 확인해보겠습니다.

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <article class="box">
    <div>1</div>
    <div>2</div>
    <div class="unique">3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div>7</div>
    <div>8</div>
    <div>9</div>
    <div>10</div>
    <div>11</div>
    <div>12</div>
  </article>
</body>
</html>

 


 

1) relative

relative 속성값은 원래 있어야 하는 위치에서 top, left, right, bottom 속성으로 위치를 이동시킬 수 있습니다.
top: 20px; left: 20px은 각각 위에서 아래로 20px 이동, 왼쪽에서 오른쪽으로 20px 이동하라는 의미입니다.

article {
  background: yellow;
}

div, span {
  width: 80px;
  height: 80px;
  margin:20px;
}

div {
  background: green;
  display: block;
  color: white;
  font-weight: bold;
  text-align: center;
}

.unique {
  background: red;
  top: 20px;
  left: 20px;
  position: relative;
}




 

2) absolute

absolute는 아이템이 담겨있는 상자 안에서 옮겨가는 것을 의미합니다. 제일 위에 있는 박스가 "box"이기 때문에 그것을 기준으로 이동합니다.

article {
  background: yellow;
  top: 20px;
  left: 20px;
  position: relative;
}

div, span {
  width: 80px;
  height: 80px;
  margin:20px;
}

div {
  background: green;
  display: block;
  color: white;
  font-weight: bold;
  text-align: center;
}

.unique {
  background: red;
  top: 20px;
  left: 20px;
  position: absolute;
}

위에와는 다르게 article 태그에도 relative 속성값을 넣어주었기 때문에 노란 박스가 전체적으로 움직인 것을 확인할 수 있습니다. 또한 그것을 기준으로 3번 박스가 20px, 20px 움직인 것을 확인할 수 있습니다.

 


 

3) fixed

fixed는 상자 안에서 완전히 벗어나 윈도우 안에서 움직이는 것을 말합니다.


 

4) sticky

sticky는 원래 있던 자리를 유지하지만 scrolling을 해도 그 자리를 고정값으로 붙어있는 것을 말합니다.

 


 

# 위의 내용은 Youtube 드림코딩 by 엘리 를 참고해서 작성
   - 위 유투브는 도움이 되는 내용의 영상이 많습니다. 구독하시고 유용한 정보를 많이 얻는 것도 좋습니다.
# CSS reference: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference
# CSS reference: https://www.w3schools.com/cssref/
# CSS 작성 연습 사이트: Jsbin.com
# CSS 브라우저 호환성 검토: caniuse.com

 

 

 

반응형