JavaScript(일반 또는 jQuery)를 사용하여 CSS 사용자 정의 속성(스타일시트에서 var(…)
를 통해 액세스되는 속성)을 가져오고 설정하는 방법은 무엇입니까?
이것은 실패한 시도입니다. 버튼을 클릭하면 일반적인 font-weight
属性,但不会更改自定义 --mycolor
속성이 변경됩니다.
<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> <style> body { --mycolor: yellow; background-color: var(--mycolor); } </style> </head> <body> <p>Let's try to make this text bold and the background red.</p> <button onclick="plain_js()">Plain JS</button> <button onclick="jQuery_()">jQuery</button> <script> function plain_js() { document.body.style['font-weight'] = 'bold'; document.body.style['--mycolor'] = 'red'; }; function jQuery_() { $('body').css('font-weight', 'bold'); $('body').css('--mycolor', 'red'); } </script> </body> </html>
네이티브 솔루션
CSS3 변수를 가져오거나 설정하는 표준 방법 은
.setProperty()
和.getPropertyValue()
입니다.변수가 전역 변수(
으아아아:root
에 선언됨)인 경우 다음을 사용하여 해당 값을 가져오고 설정할 수 있습니다.그러나
.setProperty()
을 사용하여 var의 값을 설정한 경우 getter는 해당 값만 반환합니다. CSS 선언을 통해 설정하면undefined
가 반환됩니다. 다음 예에서 확인해 보세요.이 예기치 않은 동작을 방지하려면
으아아아.getPropertyValue()
之前使用getCompulatedStyle()
메서드를 호출해야 합니다. 그러면 getter는 다음과 같이 보일 것입니다:제 생각에는 CSS 변수에 접근하는 것이 더 쉽고 빠르며 직관적이고 자연스러워야 합니다...
개인적인 접근 방식
문서에서 모든 활성 CSS 전역을 자동으로 감지하고 객체로 패키징하는 작은(CSSGlobalVariables 더 쉽게 액세스하고 조작할 수 있도록 . 으아아아
개체 속성에 적용된 모든 변경 사항은 자동으로 CSS 변수로 변환됩니다.사용 가능: https://github.com/colxi/css-전역 변수
다음을 사용할 수 있습니다.
으아악document.body.style.setProperty('--name', value);
: