2016-04-09 17 views
1

Çok temel bir görüntü düzenleyici üzerinde çalışıyorum ancak gerçek css filtre değerlerini etkilemek için aralık girdi kaydırıcılarını (# fx-kaydırıcı) alamıyorum.Javascript aracılığıyla CSS filtre değerlerini değiştirme

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>

Herhangi bir yardım mutluluk duyacağız: Bu kod olduğunu! Teşekkürler. :)

+1

Bir kaç temel yazım hatası hataları var. Öğeler "sınıf" var, ancak "getElementById" kullanıyorsunuz. Stili belirleyen satırlardaki alıntılardan sonra ekstra bir '' 'vardır. – Harry

+1

da 'webkitFilter' değil 'WebkitFilter' – Pointy

cevap

0

Tuval kabınıza bir kimlik eklemeniz ve doygunluk kontrolünüz için yanlış kimliği kullanmanız gerekir. Ayrıca, 3 kontrolü birleştirmelisiniz, aksi takdirde yalnızca doygunluk seviyesini ayarlayabilirsiniz.

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

Oh, ve gerçekten filtrenizi 10 ile çarpmak istemediğinizi tahmin ediyorum, böylece yüzdeleriniz% 1000'den% 2000'e çıktı, ancak Daha önce ne yapıyorsun? – NOBrien

+0

Bu mükemmel çalışıyor! Çok teşekkür ederim. :) Burada gönderdiğim sadeleştirilmiş kodu oluştururken yanlışlıkla filtre değeri çarpanlarını orada bıraktım. Tekrar teşekkürler. Sorun çözüldü. – RoyNeary

İlgili konular