기존 색상 값을 가져 와서 알파 채널을 적용 할 수 없습니다. 즉,와 같은 기존 16 진수 값을 가져 와서 #f0f0f0
알파 구성 요소로 지정하고 결과 값을 다른 속성과 함께 사용할 수 없습니다 .
그러나 사용자 정의 속성을 사용하면 16 진수 값을 RGB 트리플렛으로 변환하여 사용할 수 있으며 rgba()
해당 값을 쉼표를 포함하여 사용자 정의 속성에 저장하고 원하는 알파 값을 가진 함수 var()
로 해당 값을 대체 rgba()
할 수 있습니다. 그냥 일이야:
:root {
/* #f0f0f0 in decimal RGB */
--color: 240, 240, 240;
}
body {
color: #000;
background-color: #000;
}
#element {
background-color: rgba(var(--color), 0.8);
}
<p id="element">If you can see this, your browser supports custom properties.</p>
이것은 거의 사실이 아닌 것 같습니다. 1 어떻게 작동합니까?
커스텀 속성의 값으로 치환된다는 사실에 놓여 마법 으로는 교체 할 때 var()
, 특성 값에 대한 참조를 하기 전에 그 속성의 값이 계산된다. 지금까지 사용자 지정 속성에 관한 한대로의 가치 있음이 수단 --color
귀하의 예제에서 모두에서 컬러 값이 아닙니다 까지var(--color)
표현은 색상 값 (및 해당 맥락에서) 기대 어딘가에 나타납니다. 에서 2.1 CSS의-변수 사양의 :
사용자 정의 속성에 허용되는 구문은 매우 허용됩니다. 시퀀스에 <bad-string-token>, <bad-url-token>, 일치하지 않는 <)-token>, <]-가 포함되지 않는 한 <declaration-value> 생성은 하나 이상의 토큰 시퀀스와 일치합니다. token> 또는 <}-token> 또는 "<" "값을 가진 최상위 <semicolon-token> 토큰 또는 <delim-token> 토큰.
예를 들어, 다음은 유효한 사용자 정의 특성입니다.
--foo: if(x > 5) this.width = 10;
이 값은 변수로는 쓸모가 없지만 일반적인 속성에서는 유효하지 않으므로 JavaScript에서 읽고 작동 할 수 있습니다.
그리고 3 절 :
속성에 하나 이상의 var () 함수가 포함되어 있고 해당 함수가 구문 상 유효한 경우 구문 분석시 전체 속성 문법이 유효한 것으로 가정해야합니다. var () 함수가 대체 된 후 계산 된 값 시간에 구문 검사 만됩니다.
이것은 240, 240, 240
위에서 본 값이 선언이 계산 되기 전에rgba()
함수 로 직접 대체 됨을 의미합니다 . 그래서 이거:
#element {
background-color: rgba(var(--color), 0.8);
}
rgba()
쉼표로 구분 된 숫자 값이 4 개 이상이어야 하므로 처음 에는 유효한 CSS가 아닌 것 같습니다.
#element {
background-color: rgba(240, 240, 240, 0.8);
}
물론 이것은 완벽하게 유효한 CSS입니다.
한 단계 더 나아가면 알파 구성 요소를 자체 사용자 정의 속성에 저장할 수 있습니다.
:root {
--color: 240, 240, 240;
--alpha: 0.8;
}
동일한 결과로 대체하십시오.
#element {
background-color: rgba(var(--color), var(--alpha));
}
이를 통해 즉시 교환 할 수있는 다른 알파 값을 가질 수 있습니다.
1 사용자 정의 속성을 지원하지 않는 브라우저에서 코드 스 니펫을 실행하는 경우입니다.