2016-04-09 122 views
1

我正在處理非常基本的圖像編輯器,但無法獲取範圍輸入滑塊(#fx-slider)來影響實際的css過濾器值。這是代碼:通過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