【问题标题】:Jquery fade in and out between color and BW imageJquery在颜色和BW图像之间淡入淡出
【发布时间】:2014-06-03 07:09:13
【问题描述】:

我正在尝试悬停以将彩色图像淡化为黑白图像。所以我想做的是使用 JqueryUI switchClass 并在两个类之间淡入淡出

这是我的 CSS:

 img.grayscale {
 filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter     id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter>    </svg>#grayscale"); /* Firefox 10+, Firefox on Android */
 filter: gray; /* IE6-9 */
-webkit-filter: grayscale(100%); /* Chrome 19+, Safari 6+, Safari 6+ iOS */
 }

这是使图像成为黑白的类

我这里有一张图片:

<div class="thumbnail">
    <img  src="/images/colored.jpg" class="img"/>
   </div> 

我的 Jquery 代码是:

 $('.thumbnail').mouseover(function(){
$('.img').switchClass( "img", "grayscale", 1000, "easeOutBounce" )
  });
 $('.thumbnail').mouseout(function(){
$('.img').switchClass( "grayscale", "img", 1000, "easeInOutQuad" )
 });

它不工作,它的淡入和淡出不顺畅,有人可以帮助我吗?

谢谢

【问题讨论】:

    标签: jquery html css jquery-ui


    【解决方案1】:

    你不需要一个 jquery。你可以使用css。

    img.grayscale{ 
    filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 10+, Firefox on Android */
        filter: grayscale(100%);
        -webkit-filter: grayscale(100%);  /* For Webkit browsers */
        filter: gray;  /* For IE 6 - 9 */
        -webkit-transition: all .6s ease;  /* Transition for Webkit browsers */
    }
    img.grayscale:hover{ 
     filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'1 0 0 0 0, 0 1 0 0 0, 0 0 1 0 0, 0 0 0 1 0\'/></filter></svg>#grayscale");
        filter: grayscale(0%);
        -webkit-filter: grayscale(0%);
        filter: none;
    }
    

    这里你的html标签应该是

    <div class="thumbnail">
        <img  src="/images/colored.jpg" class="img grayscale"/>
    </div> 
    

    这个解决方案非常简单,我发现它可以有效地跨多个浏览器使用。它只是在 css 中使用 :hoverfilter 来避免所有 jquery 的东西。

    来源:http://www.cheesetoast.co.uk/add-grayscale-images-hover-css-black-white/

    【讨论】:

    • +1 - 你应该解释一下如何以及为什么这是有效的。
    • 已编辑。不知道有多少需要解释,因为它非常简单。
    • 这个会慢慢变灰吗?
    • 我不能让它延迟更多,怎么做我需要慢慢让它褪色
    • -webkit-transition: all .6s ease; 将其更改为 1s 或 2s 将减缓衰落。让我知道这是否有效
    【解决方案2】:

    你不需要javascript:

    img.grayscale{-webkit-transition: all 0.2s ease;}
    img.grayscale:hover {
        filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter     id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter>    </svg>#grayscale"); /* Firefox 10+, Firefox on Android */
        filter: gray; /* IE6-9 */
        -webkit-filter: grayscale(100%); /* Chrome 19+, Safari 6+, Safari 6+ iOS */
    }
    

    希望有帮助

    【讨论】:

    • 在 9+ 上肯定会
    • 是的,我看过了,但由于某种原因,它并没有延迟它发生得太快
    • 尝试增加时间,比如 1 秒而不是 0.4 秒,并尝试在最后使用缓入缓出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 2011-09-06
    • 2012-11-30
    相关资源
    最近更新 更多