2016-09-19 13 views
-3

ボタンをクリックしているときに画像にフィルタを適用したいのですが、別のボタンをクリックすると別のフィルタが適用されます。ボタンでCSSを変更するにはどうすればいいですか

どうすればいいですか?

ありがとうございました。

CSSで:active関数を使用しようとしましたが、ボタンにのみ適用されます。私はjavascriptを使ってみましたが、うまくいきませんでした。

function FilterGrey() { 
    var FilterGrey = Document.getElementsById("FilterGrey"); 
    document.body.video.filter = "grayscale(100%)" 
} 
+2

を試すことができます! –

+1

コードをデバッグしようとしましたか? 'document.body.video.filter =" grayscale(100%) "' document.body.videoとは何ですか?存在していても、 'Node.filter'ではなく' Node.style.filter'を探しています。また、複数のフィルタを切り替え可能にしたいと思うように思えますが、それ以上のロジックが必要になります。あなたはあなたの質問を[編集]して[mcve]を含めることができますか?デバッグの質問にはMCVEのトピックが必要です。 –

答えて

1

ここでは、JavaScriptを使用してクラスを切り替える例を示します。

http://codepen.io/anon/pen/mAAPrz

function filter1() { 
 
    document.getElementById('image').classList.toggle('filter1'); 
 
} 
 
function filter2() { 
 
    document.getElementById('image').classList.toggle('filter2'); 
 
}
filter1 { 
 
    filter: blur(10px); 
 
} 
 
.filter2 { 
 
    filter: grayscale(50%); 
 
}
<img src="http://mikeruiz.org/files/bliss-caf-newest.jpg" id="image"> 
 
<button onclick="filter1();">Filter 1</button> 
 
<button onclick="filter2();">Filter 2</button>

+0

ありがとうございます:Dしかし、私は複数のフィルタをどのように適用できますか? – Moloco

+1

複数のフィルタを同じ 'filter'プロパティで順番に適用することができます。もう片方の端にチェーンを張ってください。次のようになります: 'filter:blur(10px)grayscale(50%);' –

1

あなたのhtmlコードがあるこの

var FilterGrey = document.getElementById("FilterGrey"); 
 
var FilterOpacity = document.getElementById("FilterOpacity"); 
 
var FilterVideo = document.getElementById("FilteredImg"); 
 
FilterGrey.addEventListener('click', function(){ 
 
\t \t FilterVideo.style.filter = "grayscale(100%)"; 
 
}); 
 
FilterOpacity.addEventListener('click', function(){ 
 
\t \t FilterVideo.style.filter = "opacity(40%)"; 
 
})
#FilteredImg { 
 
    display:block; 
 
    margin-bottom:20px 
 
}
<img id="FilteredImg" src="http://placehold.it/350x150/e8117f/fff"> 
 
<button id="FilterGrey"> 
 
Filter Grey 
 
</button> 
 
<button id="FilterOpacity"> 
 
Filter Opacity 
 
</button>

関連する問題