【发布时间】:2013-11-26 06:39:54
【问题描述】:
我想通过单击特定元素来反转和重新反转页面 (div) 的背景图像。现在我有了脚本:
$(function(){
$(".invert").click(function(){
$(".pattern").css({
"-webkit-filter": "invert(100%)",
"-moz-filter": "invert(100%)",
"-o-filter": "invert(100%)",
"-ms-filter": "invert(100%)"
});
$(".invert").addClass("reinvert");
$(".invert").removeClass("invert");
});
$(".reinvert").click(function(){
$(".pattern").css({
"-webkit-filter": "invert(0%)",
"-moz-filter": "invert(0%)",
"-o-filter": "invert(0%)",
"-ms-filter": "invert(0%)"
});
$(".reinvert").addClass("invert");
$(".reinvert").removeClass("reinvert");
});
});
反转函数工作正常,但它不会重新反转元素。
如果可能的话,我还想让它至少在 Firefox 和其他浏览器中工作。
更新: 将代码更改为:
$(function(){
$(".invert").click(function(){
$(".pattern").toggleClass("inverted");
$(".invert").css("display", "none");
$(".re-invert").css("display", "inline");
});
$(".re-invert").click(function(){
$(".pattern").toggleClass("inverted");
$(".re-invert").css("display", "none");
$(".invert").css("display", "inline");
});
});
使用 CSS:
.inverted {
filter: invert(100%);
-webkit-filter: invert(100%);
-moz-filter: invert(100%);
-o-filter: invert(100%);
-ms-filter: invert(100%);
}
这在 Chrome 中运行良好(至少是我想要的方式),但仍在寻找任何方法使其在 Firefox 中运行相同。谢谢大家的帮助,对不起,我没有足够的声誉来评价答案。
这是工作代码:http://jsfiddle.net/5AdxC/1/
更新 2: 似乎我找到了一种让它在 Chrome 和 Firfox 中工作的方法,但没有用 Opera 或 IE 对其进行测试。 http://jsfiddle.net/5AdxC/2/
Firefox 的 CSS 选项:
filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'invert\'><feColorMatrix in='SourceGraphic' type='matrix' values='-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0'/></filter></svg>#invert");
【问题讨论】:
-
你能做这个吗
-
我试过 100% 和 0% 都不会重新反转。
标签: javascript jquery css css-filters