찾다

 >  Q&A  >  본문

JavaScript를 사용하면 CSS 사용자 정의 속성(CSS 변수라고도 함)에 액세스할 수 있습니다.

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>

P粉420868294P粉420868294399일 전701

모든 응답(2)나는 대답할 것이다

  • P粉421119778

    P粉4211197782023-10-21 17:19:53

    네이티브 솔루션

    CSS3 변수를 가져오거나 설정하는 표준 방법 .setProperty().getPropertyValue()입니다.

    변수가 전역 변수( :root 에 선언됨)인 경우 다음을 사용하여 해당 값을 가져오고 설정할 수 있습니다.

    으아아아

    그러나 .setProperty()을 사용하여 var의 값을 설정한 경우 getter는 해당 값만 반환합니다. CSS 선언을 통해 설정하면 undefined가 반환됩니다. 다음 예에서 확인해 보세요.

    으아아아 으아아아 으아아아

    이 예기치 않은 동작을 방지하려면 .getPropertyValue() 之前使用 getCompulatedStyle() 메서드를 호출해야 합니다. 그러면 getter는 다음과 같이 보일 것입니다:

    으아아아

    제 생각에는 CSS 변수에 접근하는 것이 더 쉽고 빠르며 직관적이고 자연스러워야 합니다...


    개인적인 접근 방식

    문서에서 모든 활성 CSS 전역을 자동으로 감지하고 객체로 패키징하는 작은(<3kb) 자바스크립트 도우미를 구현했습니다 CSSGlobalVariables 더 쉽게 액세스하고 조작할 수 있도록 <3kb) javascript 帮助程序,它自动检测文档中所有活动的 CSS 全局变量并将其打包到一个对象中,.< /strong> 으아아아

    개체 속성에 적용된 모든 변경 사항은 자동으로 CSS 변수로 변환됩니다.

    사용 가능: https://github.com/colxi/css-전역 변수

    회신하다
    0
  • P粉863295057

    P粉8632950572023-10-21 14:23:27

    다음을 사용할 수 있습니다. document.body.style.setProperty('--name', value);:

    으아악

    회신하다
    0
  • 취소회신하다