61

var(…)JavaScript (プレーンまたは jQuery) を使用して、CSS カスタム プロパティ (スタイルシートでアクセスされるもの) をどのように取得および設定しますか?

ボタンをクリックすると、通常の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>
4

3 に答える 3

70

使用できますdocument.body.style.setProperty('--name', value);

var bodyStyles = window.getComputedStyle(document.body);
var fooBar = bodyStyles.getPropertyValue('--foo-bar'); //get

document.body.style.setProperty('--foo-bar', newValue);//set

詳細はこちら

于 2016-03-18T15:56:13.050 に答える
4

次の例は、CSS 変数とも呼ばれるカスタム CSS プロパティを利用して、JavaScript または jQuery を使用して背景を変更する方法を示しています (詳細はこちらを参照)。おまけ: このコードは、CSS 変数を使用してフォントの色を変更する方法も示しています。

function plain_js() { 
    // need DOM to set --mycolor to a different color 
    d.body.style.setProperty('--mycolor', 'red');
     
    // get the CSS variable ...
    bodyStyles = window.getComputedStyle(document.body);
    fontcolor = bodyStyles.getPropertyValue('--font-color'); //get
 
    // ... reset body element to custom property's new value
    d.body.style.color = fontcolor;
    d.g("para").style["font-weight"] = "bold";
    this.style.display="none";
  };

  function jQuery_() {
    $("body").get(0).style.setProperty('--mycolor','#f3f');
    $("body").css("color",fontcolor);
    $("#para").css("fontWeight","bold");
    $(this).css("display","none");
  }
  
var bodyStyles = null;
var fontcolor = "";
var d = document;

d.g = d.getElementById;
d.g("red").addEventListener("click",plain_js);
d.g("pink").addEventListener("click",jQuery_);
:root {
     --font-color:white;
     --mycolor:yellow;
    }
    body { 
      background-color: var(--mycolor);
      color:#090;
    }
    
    #para {
     font: 90% Arial,Helvetica;
     font-weight:normal;
    }
    
    #red {
      background:red;
    }
    
    #pink {
      background:#f3f;
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<p id="para">Let's try to make the background red or pink and change the text to white and bold.</p>
  <button id="red">Red</button>
  <button id="pink">Pink</button>

jQuery では、カスタム プロパティを異なる値に設定するために、この応答が実際に答えを保持していることに注意してください。body 要素のget()メソッドを使用して、基礎となる DOM 構造へのアクセスを許可し、body 要素を返すことで、カスタム プロパティ--mycolorを新しい値に設定するコードを容易にします。

于 2017-06-22T11:31:22.573 に答える