[CSS] 웹페이지 혹은 요소의 배경을 지정하는 background 속성 관련 총정리

웹페이지 혹은 웹페이지의 각 요소에 색상이나 이미지로 배경을 지정하고 싶다면, CSS 에서 background 속성을 이용하면 됩니다.

background 속성은 여러가지의 값들을 포함할 수 있는데, 먼저 각각의 요소들에 대해 알아보고 이를 한번에 적용하는 방법을 알아봅시다.

background 의 세부 속성

background 의 세부 속성에는 아래와 같은 것들이 있습니다.

  • background-color: 배경의 색상
  • background-image: 배경에 사용할 이미지
  • background-position: 배경의 위치
  • background-size: 배경 이미지의 크기
  • background-repeat: 배경 이미지의 반복 여부
  • background-origin: 배경 이미지를 어디서 부터 표시할지
  • background-clip: 배경 이미지를 표시 하면서 어디서 부터 잘라서 표시할지
  • background-attachment: 배경이 고정인지 스크롤 되는지

꽤 디테일하게 설정 할 수 있는데요. 하나씩 알아봅시다.

background-color

background-color 속성은 배경의 색상을 지정해줍니다. 흔히 쓰는 색상은 red 처럼 그냥 색상의 영문명 그 자체로 사용할 수 있으며, #ff0000 처럼 16진수로 표기된 코드를 사용할 수도 있습니다.

body { background-color: #f00; }

background-image

background-image 는 배경으로 사용할 이미지 파일을 지정해줍니다. 당연히 배경으로 사용할 이미지에 접근 할 권한이 있어야 하며, 그러려면 주소도 알아야겠죠.

body { background-image: url("bg-img.png"); }

배경화면을 여러개 사용할 수도 있습니다. 여러개를 사용할 경우 겹쳐서 보이게 됩니다. 그렇다면 당연히도 이미지 파일이 투명해야겠죠? 콤마(,)로 파일 주소를 구분하면 됩니다.

body { background-image: url("bg-img.png"), url("bg-img2.png"); }

background-position

background-position 은 배경의 위치를 결정합니다. 가로와 세로 위치를 지정할 수 있구요. 만약 한쪽만 지정한다면 나머지는 기본 값인 center 가 됩니다. %px 단위로도 지정 할 수 있습니다. 이때 기준은 왼쪽 위가 (0, 0) 이 됩니다.

html{ background-position: left top; }
body { background-position: right bottom; }
.site-header { background-position: center center; }
.entry-content { background-position: 25% 50%; }
.entry-footer { background-position: 20px 50px; }

background-size

background-size 는 배경 이미지의 크기를 결정합니다. 직접 길이를 설정해도 되고 % 값으로 설정해도 됩니다.

html { background-size: 100px 200px; }
body { background-size: 50% 25%; }

재밌는 설정 값도 있습니다. 바로 covercontain 값을 지정할 수 있는데 이 두 값은 아래와 같은 특징을 가집니다.

  • cover: 배경 이미지의 비율 그대로 확대하여 요소의 전체를 덮음
  • contain: 배경 이미지를 비율 그대로 확대하여 가로나 세로 중 꽉차는 쪽에 사이즈를 맞춤

위 두가지 속성의 주요한 차이점은 요소 전체를 덮을 것인지(cover), 배경 이미지의 전체를 표시할 것인지(contain) 여부입니다.

예를 들어 cover 를 사용할 경우 가로를 꽉차게 하느라 세로도 함께 늘려서, 이미지의 일부가 배경으로 표시 되지 않을 수 있지만, contain 을 사용하면 이미지는 전체가 다 보이지만 요소의 일부에 배경 이미지를 적용하지 못할 수도 있습니다.

background-repeat

배경 이미지의 반복 여부를 결정 합니다. 기본 값은 repeat 로 가로와 세로 모두 반복됩니다. 주로 패턴이미지를 사용 할 때 이 값을 쓰면 됩니다. background-repeat 의 값으로 사용할 수 있는 것들은 아래와 같습니다.

  • repeat: 가로, 세로 모두 반복
  • repeat-x: 가로만 반복
  • repeat-y: 세로만 반복
  • no-repeat: 반복하지 않음

background-origin

배경을 어디서 부터 표시 할지 결정합니다.

  • border-box: 요소의 테두리 부터 배경 표시
  • padding-box: 요소의 내부 여백 부터 배경 표시
  • content-box: 요소의 내용 부분 부터 배경 표시

background-clip

배경을 어디서 부터 잘라서 표시할지 결정 합니다. 위 background-origin 하고 비슷할 수 있지만 조금 다른게 배경을 border-box 부터 표시 하되, background-clip 속성을 이용해 content-box 부터 잘라서 보여 줄 수 있습니다. 사용할 수 있는 속성은 위 background-origin 과 같습니다.

background-attachment

화면 스크롤에 따라 배경화면이 움직이게 할지 여부 입니다.

  • fixed: 화면이 스크롤 되어도 배경화면은 고정
  • scroll: 화면이 스코롤 됨에 따라 배경화면도 이동

local 이라는 속성도 있지만, 잘 사용되지 않으며 일부 브라우저에서만 작동합니다.

background 속성으로 한번에 설정하기

꽤 많은 세부 속성들이 있는데, background 를 이용해 한번해 설정 할 수 있습니다. 바로 아래와 같은 방법으로 말이죠.

body { background: #f00 url("bg-img.png") repeat-x fixed left top/50px 50px; }

이때 주의해야할 사항이 있습니다 background-positionbackground-size 의 표기 방법이 비슷함에 따라, 두 속성을 사용하려면 꼭 가운데 슬래시(/)를 넣어서 구분 해주어야 합니다. 위 코드에서 left top/50px 50px 이 부분입니다.

내용이 조금 길어졌는데 사실 이렇게 디테일하게 쓰지 않아요. 필요한 속성만 골라서 잘 사용해 봅시다.

참고자료