2016-06-23 18 views
10

jQueryを使用してCSSで使用する変数を変更することはできますか? 簡単な例:私は、例えば赤にコガモから変数の色を変更するにはどうすればよいjQueryを使用してCSS変数を変更する

html { 
 
    --defaultColor: teal; 
 
} 
 
.box { 
 
    background: var(--defaultColor); 
 
    width: 100px; 
 
    height: 100px; 
 
    margin: 5px; 
 
    float: left; 
 
} 
 
.circle { 
 
    background: #eee; 
 
    border: 2px solid var(--defaultColor); 
 
    width: 100px; 
 
    height: 100px; 
 
    margin: 5px; 
 
    float: left; 
 
    border-radius: 100%; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="clickToChange" type="button" style="width: 100%;">Click to Change</button> 
 
<div class="box"></div> 
 
<div class="box"></div> 
 
<div class="box"></div> 
 
<br/> 
 
<div class="circle"></div> 
 
<div class="circle"></div> 
 
<div class="circle"></div>

?これは動作しません。

$("#clickToChange").click(function(){ 
    $(html).css("--defaultColor", "red"); 
}); 
+0

ここに私の猿のパッチがあるので、あなたは '.css'メソッドでCSS変数を使うことができます。https://gist.github.com/jcubic/9ef9fa2561de8430e953e2fe62011c20 – jcubic

答えて

11

をあなたは無地のJavaScript elem.style.setProperty("variableName", "variableProp");

$("html").on('click', function() { 
 
    
 
    $("body").get(0).style.setProperty("--color", "hotpink"); 
 
    
 
});
body { 
 
    --color: blue; 
 
    background-color: var(--color); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
click me!

を使用してCSSの変数を変更することがあり
+2

jqueryでは、次のことができます:$( "html")。attr( "style"、 " - defaultColor:hotpink"); – DinoMyte

+0

正直言って、正直なところ、これは正規表現を使わなくても可能であるとは思われませんでした。私は間違っていると証明されてうれしいです。 :) –

+0

@MattDiMuと@ DinoMyteの両方にお越しいただきありがとうございます。 –

2

最も簡単な解決策の私見:今度はデフォルトの色が変化することを、クラスを変更します。

html { 
    --defaultColor: teal; 
} 
html.someOtherDefaultColor { 
    --defaultColor: rebeccapurple; 
} 

$("#clickToChange").click(function(){ 
    $(html).toggleClass("someOtherDefaultColor"); 
}); 
+0

それも私が考えていたものです。 –

+0

これは機能する解決策を提供し、質問の第2部分に答えるが、むしろ質問された最初の質問に答えることを避ける。 –

+0

@DavidThomasは許されていますが、それにも依存しています。要求された根本的な問題(単純にこれを解決すること)を解決する可能性もあります。このように何かを達成することが可能なほとんどの場所では、懸念の分離に関して、それが好ましい方法であると多くの人が考えています。 – CBroe

関連する問題