할머니의 콤퓨타 도전기

CSS 레이아웃 본문

Web Front-end/Html + CSS

CSS 레이아웃

ji.o.n.e 2021. 5. 14. 01:44

display 속성

  • 페이지의 레이아웃을 결정하는 속성
  • 모든 HTML 엘리먼트는 display 값을 갖고 있으며 대부분 block이거나 inline

display 속성 종류

  • block
    • 기본적으로 하나의 줄을 차지하고 가능한 최대의 가로 넓이를 가짐
    • 대표적인 태그에는 div, p, form, header, section 등이 있다.
  • inline
    • 특정 텍스트를 감싸하는 형태의 디스플레이 속성
    • 대표적인 태그에는 span, a 등이 있다.
  • inline-block
    • 줄 바꿈 없이 다른 인라인 엘리먼트와 나란히 배치되는 디스플레이 속성
    • 대표적인 태그에는 button이 있다
  • flex
    • 화면의 비율을 기준으로 레이아웃을 구성할 수 있는 최신 레이아웃 속성
  • none
    • 화면에 표지되지 않음
    • 대표적으로 script 태그가 있다.
    • visibility 속성과는 다르게 none 엘리먼트는 화면에 해당 요소에 대한 공간을 차지하지 않는다.

 

박스 레이아웃

특정 엘리먼트의 width를 500px로 주고 padding을 20px로 준 경우, 사용자가 기대하는 것은 넓이가 500px인 엘리먼트이지만 실제로는 padding이 적용되어 넓이가 540px인 엘리먼트가 출력된다. 이처럼 엘리먼트의 width와 함께 padding, border 등의 속성의 추가되면 최종 넓이를 계산하기가 어려워질 수 있다.

이럴 때 box-sizing 속성을 border-box로 주면 padding, border 등의 속성 값을 넓이 반영하지 않는다. 따라서 이 속성을 활영하면 500px 엘리먼트가 표시된다. padding 속성의 값은 넓이가 500px인 엘리먼트 내부에 적용되는 것이다.

이러한 이유로 CSS 코드를 작성할 때 아래와 같은 코드를 추가하고 시작하는 경우가 많다. 페이지의 모든 엘리먼트에 동일한 박스 레이아웃 컨셉을 적용하면 레이아웃을 잡기가 수월해진다.

* {
	box-sizing: border-box;
}

 

position

  • 해당 엘리먼트가 페이지에 어떻게 위치할 지를 지정하는 속성
  • static
    • 기본 값(엘리먼트에 따로 값을 지정하지 않을 경우 static 값이 된다.)
    • 위치가 지정되지 않았다는 의미
  • relative
    • top, right, left, bottom과 같은 속성을 주지 않으면 static과 동일하게 위치한다.
    • 각의 방향을 기준으로 태그 안쪽 방향으로 이동
      • 따라서 top: -20px, left: 20px 속성을 주면 위쪽으로 20px, 왼쪽으로 20px 떨어진 곳에 엘리먼트가 위치하게 된다.
  • fixed
    • 사용자에게 비춰지는 화면을 기준으로 위치가 지정
    • 페이지가 스크롤 되거나 페이지 크기가 축소, 확대되어도 동일한 위치에 남아 있다.
      • position: fixed, bottom: 0, right: 0 으로 속성을 지정하면 페이지 우측 하단에 고정된 엘리먼트가 표시된다.
  • absolute
    • position 값이 설정된 가장 근접한 엘리먼트를 기준으로 fixed와 같이 위치가 설정된다.
    • 만약 페이지에 포지션 값을 따로 설정한 엘리먼트가 없다면 document body를 기준으로 위치가 지정된다.
    • absolute를 사용할 때는 꼭 근처 엘리먼트에 relative를 지정한다.

 

참고

'Web Front-end > Html + CSS' 카테고리의 다른 글

CSS FlexBox  (0) 2022.01.21
viewport 메타태그, link 태그  (0) 2022.01.20
CSS Box Model  (0) 2021.05.12
html 정리  (0) 2021.05.05
(html) div 태그  (0) 2021.04.07
Comments