Development Tip

CSS 전역 변수 만들기 : 스타일 시트 테마 관리

yourdevel 2020. 12. 10. 21:24
반응형

CSS 전역 변수 만들기 : 스타일 시트 테마 관리


이 질문에 이미 답변이 있습니다.

다음과 같은 CSS에서 전역 변수를 설정하는 방법이 있습니까?

@Color1 = #fff;
@Color2 = #b00;

h1 {
  color:@Color1;
  background:@Color2;
}

최신 업데이트 : 2018 년 3 월 4 일

CSS 변수 (사용자 지정 속성)가 도착했습니다!

또 다른 브라우저. Edge는 이제이 훌륭한 기능을 지원하여 Mozilla와 Google에 합류했습니다.


전 처리기 "아님"이 필요 하지 않습니다!

CSS에는 많은 반복이 있습니다. 단일 색상이 여러 곳에서 사용될 수 있습니다.

일부 CSS 선언의 경우 캐스케이드에서이를 더 높게 선언하고 CSS 상속으로이 문제를 자연스럽게 해결할 수 있습니다.

사소하지 않은 프로젝트의 경우 항상 가능한 것은 아닙니다. :root유사 요소 에 변수를 선언함으로써 CSS 작성자는 변수를 사용하여 일부 반복 인스턴스를 중지 할 수 있습니다.

작동 원리

스타일 시트 상단에 변수를 설정합니다.

CSS

루트 클래스를 만듭니다.

:root {
}

변수 생성 (- [String] : [value] )

:root {
  --red: #b00;
  --blue: #00b;
  --fullwidth: 100%;
}

CSS 문서의 아무 곳에 나 변수를 설정하십시오.

h1 {
  color: var(--red);
}
#MyText {
  color: var(--blue);
  width: var(--fullwidth);
}

브라우저 지원 / 호환성

현재 호환성에 대해서는 caniuse.com참조하십시오 .

! [지원되는 브라우저

FIREFOX : 버전 31 + (기본적으로 활성화 됨)

(평소처럼 앞장서고 있습니다.) More info from Mozilla

CHROME : 버전 49 + (기본적으로 활성화 됨) .

"이 기능은 시험용 웹 플랫폼 기능 을 사용 설정하여 테스트를 위해 Chrome 버전 48에서 사용 설정할 수 있습니다 . chrome://flags/이 설정에 액세스하려면 Chrome 주소 표시 줄에 입력 하세요."

Safari / IOS Safari : 버전 9.1 / 9.3 (기본적으로 활성화 됨) .

Opera : 버전 39 + (기본적으로 활성화 됨) .

Android : 버전 52 + (기본적으로 활성화 됨) .

IE : 결코 일어나지 않을 것입니다.

Edge : 버전 15 + (기본적으로 활성화 됨) .

Windows Insider Preview 빌드 14986에 도착한 CSS 사용자 지정 속성


W3C 사양

향후 CSS 변수에 대한 전체 사양

Read more


사용해보기

테스트를 위해 바이올린과 스 니펫이 아래에 첨부되어 있습니다.

(지원되는 브라우저에서만 작동합니다.)

데모 FIDDLE

:root {
  --red: #b00;
  --blue: #4679bd;
  --grey: #ddd;
  --W200: 200px;
  --Lft: left;
}
.Bx1,
.Bx2,
.Bx3,
.Bx4 {
  float: var(--Lft);
  width: var(--W200);
  height: var(--W200);
  margin: 10px;
  padding: 10px;
  border: 1px solid var(--red);
}
.Bx1 {
  color: var(--red);
  background: var(--grey);
}
.Bx2 {
  color: var(--grey);
  background: black;
}
.Bx3 {
  color: var(--grey);
  background: var(--blue);
}
.Bx4 {
  color: var(--grey);
  background: var(--red);
}
<p>If you see four square boxes then variables are working as expected.</p>

<div class="Bx1">I should be red text on grey background.</div>
<div class="Bx2">I should be grey text on black background.</div>
<div class="Bx3">I should be grey text on blue background.</div>
<div class="Bx4">I should be grey text on red background.</div>


지금은 CSS에서 변수를 만들 수 없습니다. 이런 종류의 기능을 원한다면 SASS 또는 LESS 와 같은 CSS 전처리기를 사용해야합니다 . SASS에 표시되는 스타일은 다음과 같습니다.

$Color1:#fff;
$Color2:#b00;
$Color3:#050;

h1 {
    color:$Color1;
    background:$Color2;
}

또한 중첩 선택기와 같은 다른 (멋진) 작업을 수행 할 수 있습니다.

#some-id {
    color:red;

    &:hover {
        cursor:pointer;
    }
}

이것은 다음과 같이 컴파일됩니다.

#some-id { color:red; }
#some-id:hover { cursor:pointer; }

설정 지침 및 구문 / 기능에 대한 자세한 내용 공식 SASS 자습서확인하십시오 . 개인적으로 저는 쉬운 개발을 위해 Mindscape의 Web Workbench 라는 Visual Studio 확장을 사용합니다 . 다른 IDE 용 플러그인도 많이 있습니다.

최신 정보

2014 년 7 월 / 8 월 현재 Firefox는 CSS 변수에 대한 초안 사양구현했습니다 . 구문은 다음과 같습니다.

:root {
  --main-color: #06c;
  --accent-color: #006;
}
/* The rest of the CSS file */
#foo h1 {
  color: var(--main-color);
}

CSS를 사용하는 것은 불가능하지만 less 또는 SASS 와 같은 CSS 전처리기를 사용합니다 .


SASS http://sass-lang.com/ 또는 LESS http://lesscss.org/ 사용해보기

저는 SASS를 좋아하고 모든 프로젝트에 사용합니다.


나는 이렇게한다 :

HTML :

<head>
    <style type="text/css"> <? require_once('xCss.php'); ?> </style>
</head>

xCss.php :

<? // place here your vars
$fntBtn = 'bold 14px  Arial'
$colBorder  = '#556677' ;
$colBG0     = '#dddddd' ;
$colBG1     = '#44dddd' ;
$colBtn     = '#aadddd' ;

// here goes your css after the php-close tag: 
?>
button { border: solid 1px <?= $colBorder; ?>; border-radius:4px; font: <?= $fntBtn; ?>; background-color:<?= $colBtn; ?>; } 

같은 경우 LESS 또는 SASS가 필요합니다.

하지만 여기에 CSS3에서 작동 할 또 다른 대안이 있습니다.

http://css3.bradshawenterprises.com/blog/css-variables/

예 :

 :root {
    -webkit-var-beautifulColor: rgba(255,40,100, 0.8);
    -moz-var-beautifulColor: rgba(255,40,100, 0.8);
    -ms-var-beautifulColor: rgba(255,40,100, 0.8);
    -o-var-beautifulColor: rgba(255,40,100, 0.8);
    var-beautifulColor: rgba(255,40,100, 0.8);
 }
  .example1 h1 {
    color: -webkit-var(beautifulColor);
    color: -moz-var(beautifulColor);
    color: -ms-var(beautifulColor);
    color: -o-var(beautifulColor);
    color: var(beautifulColor);
 }

참고 URL : https://stackoverflow.com/questions/15831657/creating-css-global-variables-stylesheet-theme-management

반응형