2016-04-09 15 views
1

非常に基本的な画像エディタで作業していますが、実際のCSSフィルタ値に影響する範囲入力スライダ(#fx-slider)を取得できません。JavaScriptを使用してCSSフィルタ値を変更する

function ChangeFilter() { 
 

 
    var ifx = document.getElementById("canvasFrame"); 
 
    var br = document.getElementById("br"); 
 
    var ct = document.getElementById("ct"); 
 
    var st = document.getElementById("saturate"); 
 

 
ifx.style.WebkitFilter = "brightness(" + br.value * 10 + "%)"); 
 
ifx.style.filter = "brightness(" + br.value * 10 + "%)"); 
 

 
ifx.style.WebkitFilter = "contrast(" + ct.value * 10 + "%)"); 
 
ifx.style.filter = "contrast(" + ct.value * 10 + "%)"); 
 

 
ifx.style.WebkitFilter = "saturate(" + st.value * 10 + "%)"); 
 
ifx.style.filter = "saturate(" + st.value * 10 + "%)"); 
 
}
#canvasFrame { 
 
    width:100px; 
 
    height:50px; 
 
    filter: brightness(100%) contrast(100%) saturate(100%); 
 
    -webkit-filter: brightness(100%) contrast(100%) saturate(100%); 
 
}
<div class="canvasFrame"> 
 
    <img src="http://www.joomlaworks.net/images/demos/galleries/abstract/7.jpg" alt="image"> 
 
</div> 
 
<div class="fx-slider"> 
 
    <label for="br">Brightness</label> 
 
    <input id="br" name="br" type="range" min="0" max="200" value="100" onchange="ChangeFilter()"> 
 
</div> 
 
<div class="fx-slider"> 
 
    <label for="ct">Contrast</label> 
 
    <input id="ct" name="ct" type="range" min="0" max="200" value="100" onchange="ChangeFilter()"> 
 
</div> 
 
<div class="fx-slider"> 
 
    <label for="st">Saturation</label> 
 
    <input id="st" name="ct" type="range" min="0" max="200" value="100" onchange="ChangeFilter()"> 
 
</div>

任意の助けをいただければ幸いです。これは、コードです!ありがとう。 :)

+1

あなたはいくつかの基本的なタイプミスのエラーを持っています。要素に 'class'がありますが、あなたは' getElementById'を使っています。スタイルを設定する行に引用符の後に余分な ')'があります。 – Harry

+1

また、 'WebkitFilter'ではなく' webkitFilter'です – Pointy

答えて

0

あなたのキャンバスコンテナにIDを追加する必要があります。彩度コントロールに間違ったIDを使用する必要があります。また、3つのコントロールを連結する必要があります。そうでない場合は、飽和レベルのみを設定します。

function ChangeFilter() { 
    var ifx = document.getElementById("canvasFrame"); //need to update this id in you html 
    var br = document.getElementById("br"); 
    var ct = document.getElementById("ct"); 
    var st = document.getElementById("st"); //this id was wrong in your code 

    //set all 3 filter values at once. 
    ifx.style.webkitFilter = "brightness(" + br.value * 10 + "%) contrast(" + ct.value * 10 + "%) saturate(" + st.value * 10 + "%)"; 
    ifx.style.filter = "brightness(" + br.value * 10 + "%) contrast(" + ct.value * 10 + "%) saturate(" + st.value * 10 + "%)"; 
} 

CodePen:http://codepen.io/nobrien/pen/BKmevp

+0

ああ、私はあなたが本当にあなたのフィルタを10倍にしたくないと推測していますので、パーセンテージは1000から2000%になります。あなたは前に何をしていますか? – NOBrien

+0

これは完全に機能します!どうもありがとうございます。 :)私はここに投稿した単純化されたコードを作成する際に、誤ってフィルタ値乗数をそこに残しました。再度、感謝します。問題が解決しました。 – RoyNeary

関連する問題