CSS 변수 시작하기

이 기사는 원래 my blog 에 게시되었습니다. 부담없이 확인하세요

SASS 또는 기타 CSS 전처리기를 사용했다면 이미 변수를 사용했을 수 있습니다. CSS 변수(사용자 정의 속성이라고도 함)는 브라우저에서 기본적으로 구현됩니다.

CSS 변수는 이름에 -- 접두사로 선언해야 합니다.

:root {
    --primary-color: #eaefed;
    --text-color: #001100;
}

액세스하려면 var 함수를 사용하기만 하면 됩니다. var 함수의 첫 번째 인수는 변수의 이름입니다. 변수가 유효하지 않으면 폴백 값을 두 번째 인수로 전달할 수 있습니다.

.link {
    border: 1px solid var(--primary-color);
    color: var(--text-color, #111000); 
    /* if --text-color is invalid,fallback value #111000 is used */
}

변수의 범위



CSS 변수의 범위는 정의된 선택기의 범위입니다. 전역 범위의 경우 :root 또는 body 선택기에서 선언할 수 있습니다.

예를 들어, 클래스 --btn-danger-color 에서 btn 라는 변수를 선언해 봅시다. 범위를 벗어난 다른 클래스의 변수--btn-danger-color에 액세스하려고 하면 유효하지 않습니다. --btn-danger-color의 범위는 btn 클래스에만 있기 때문에

.btn {
    --btn-danger-color: #FF4136;
    background-color: var(--btn-danger-color);
}
.link {
    background-color: var(--btn-danger-color, green); 
    /* Background color is green because --btn-danger is invalid */
}

JavaScript로 CSS 변수 액세스 및 수정



JavaScript를 통해 CSS 변수에 액세스하거나 수정하려면 두 가지 방법을 사용할 수 있습니다.
  • getPropertyValue
  • setProperty

  • CSS 변수 값 얻기



    CSS 변수의 값을 얻으려면 getPropertyValue 메서드를 사용할 수 있습니다.

    const btn = document.querySelector('.btn');
    
    let btnDangerBg = getComputedStyle(element).getPropertyValue("--btn-danger-color"); 
    
    console.log(btnDangerBg); // #FF4136 - value of the css variable defined in .btn class in CSS
    
    :root 에 선언된 CSS 변수를 얻으려면 document.querySelector(':root');를 사용할 수 있습니다.

    CSS 변수 값 변경



    JavaScript에서 CSS 변수의 값을 설정하려면 setProperty 메서드를 사용할 수 있습니다.

      element.style.setProperty("--variable-name", value)
    
    Button 메서드를 사용하여 setProperty 배경색을 보라색으로 변경하는 작은 함수를 작성해 보겠습니다.

    function changeColorToPurple(){
       //Set the CSS variable value
      btn.style.setProperty("--btn-danger-color", "purple")
    }
    

    HTML로 링크하는 것을 잊지 마십시오.

    <button class="btn" onclick="changeColorToPurple()">Change Color</button>
    

    데모



    위의 코드에 임베디드repl를 추가하여 가지고 놀 수 있습니다.




    감사합니다.



    참조



    CSS custom properties - MDN




        [Every thing you need to know about CSS variables](https://www.freecodecamp.org/news/everything-you-need-to-know-about-css-variables-c74d922ea855/)
    

    좋은 웹페이지 즐겨찾기