본문 바로가기
Frontend/CSS

CSS에서 배경에 이미지를 넣어보자

by 코딩쥐 2024. 7. 4.

 이전 문서에서 배경에 그라데이션을 넣는 방법 대해 작성했었다. 이번에는 배경에 이미지 혹은 색상을 넣어보는 방법에 대해 적어보고자 한다. 

 

  • background-color
    배경에 색깔을 지정할 수 있다. 텍스트에 색깔을 지정하는 것과 같이 RGB, HSL 등을 통해 지정이 가능하다.

  • background-image: url('이미지주소');
    배경에 이미지를 불러올 수 있다. 기본적으로 이미지를 삽입하게 되면 브라우저의 크기에 따라 이미지가 반복해서 출력이 된다.
    • background-repeat: repeat-x | repeat-y | no-repeat;
      배경의 반복을 설정할 수 있다. repeat-x는 x축으로 반복, repeat-y는 y축으로 반복, no-repeat는 반복하지 않는다는 뜻이다.

    • background-attachment: scroll | fixed | local; 
      스크롤을 해도 배경을 그대로 유지하고 싶다면 fixed를 사용하면 된다. local의 경우 요소의 컨텐츠와 함께 이미지가 함께 scoll 된다. 

Background-position

  • background-position: 수평위치 수직위치; 
    수평위치와 수직위치를 지정하여 배경의 위치를 설정할 수 있다. left, right 등의 키워드를 사용하여  설정할 수 있으며 % 혹은 px로도 설정할 수 있다. 키워드를 사용하고 싶다면 수평위치에는 left, right, center이 수직위치에는 top, bottom, center이 값으로 들어갈 수 있다. 예를들어 오른쪽 위에 배경의 위치를 설정하고 싶다면 background position: right top;으로 설정하면 된다.

Background-clip

  • background-clip: content-box | padding-box | border-box;
    배경화면을 어디까지 적용할 것인가에 대한 내용으로 border-box는 테두리까지만 배경을 적용하고(기본값), padding-box는 컨텐츠와 테두리부분까지, content는 컨텐츠까지만 적용시킨다. 

 

Background-origin

  • background-origin: padding-box | content-box | margin-box;
    background-clip이 어디까지 배경을 지정할 것이냐를 설정하는 것이라면, background-origin은 어디서부터 background를 적용할지에 대해서 설정 가능하다. 

 

Background-size

  • background-size: 가로비율 세로비율; 
    배경의 크기는 비율(%), 픽셀 등에 따라 조정할 수도 있고 이미지의 짧은 부분 혹은 긴부분에 맞춰 이미지를 조정할 수 있다. 

  • background-size: cover | contain; 
    배경의 이미지를 짧은 부분(cover)으로 맞출 것인지 긴 부분(contain)을 기준으로 맞출 것인지 조정할 수 있다. 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 모든 div에 padding, border, 사이즈 설정함 */
        div{
            width: 300px;
            height: 100px;
            border: 5px dashed black; 
            padding: 20px;
            margin: 10px;
        }
        /* 첫번째 div에 background-color를 설정함 */
        div:nth-of-type(1){
            background-color: lightskyblue;
        }
        /*두번째와 세번째의 차이점
        1. background-attachment: 스크롤할때 컨텐츠와함께 scoll될것이냐 fixed냐
        2. background-clip을 컨텐츠박스까지 아니면 보더까지 할 것이냐
        3. 세번째는 background-size를 이미지의 긴영역에 사이즈를 맞춤*/
        div:nth-of-type(2){
            background-image: url('./selft-study-image/field.jpg');
            background-repeat: no-repeat;
            background-attachment: fixed;
            background-clip: content-box;
            background-position: right bottom;
        }

        div:nth-of-type(3){
            background-image: url('./selft-study-image/field.jpg');
            background-repeat: no-repeat;
            background-attachment: local;
            background-clip: border-box;
            background-size: contain; 
        }

        /* 네번째와 다섯번째의 차이는 background-origin이 border-box냐,
        padding-box냐이다. 이미지의 시작 위치를 확인하면 선을 기준으로 이미지가
        어디있는지 확인하면 차이점을 볼 수 있다.  */
        div:nth-of-type(4){
            background-image: url('./selft-study-image/field.jpg');
            background-repeat: no-repeat;
            background-size: 100px;
            background-origin: border-box;
        }

        div:nth-of-type(5){
            background-image: url('./selft-study-image/field.jpg');
            background-repeat: no-repeat;
            background-size: 100px;
            background-image: padding-box;
        }
    </style>
</head>
<body>
    <div><p>Hello</p></div>
    <div><p>Hello</p></div>
    <div><p>Hello</p></div>
    <div><p>Hello</p></div>
    <div><p>Hello</p></div>
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</body>
</html>