【问题标题】:Enhance Animation (JavaScript + CSS)增强动画(JavaScript + CSS)
【发布时间】:2013-09-05 20:38:39
【问题描述】:

我正在使用 CSS 和 JS 来制作小动画,但在某些浏览器上它会闪烁,我不知道这是否是最好的方法,关于什么是做这个主动脉的最佳方法的任何想法动画的?

基本上,我想要的只是让所有未选择的项目稍微褪色,然后将鼠标悬停在上面以突出显示。实时示例:http://meeped.co.uk:93/ 主页按钮部分的推荐部分。

JavaScript

$(".testimonial").hover( function() {
    $(".testimonial").addClass('testimonialNotActive');
    $(this).removeClass('testimonialNotActive').addClass('testimonialActive');
},
function(){
    $(".testimonial").removeClass('testimonialNotActive');
    $(this).removeClass('testimonialActive');
    }
);

CSS

/*Home Page SectionD*/
#home-sectionD .testimonial {
background-color: #FAFAFA;
border: 1px solid #3C5476;
margin-bottom: 10px;
}

.testimonialNotActive {
    opacity: 0.6;
    -moz-opacity: 0.6;
    -khtml-opacity: 0.6;
    filter:alpha(opacity=60);   
}

.testimonialActive {
    -webkit-box-shadow: 0px 0px 25px -2px rgba(0,0,0,0.4);
    -moz-box-shadow: 0px 0px 25px -2px rgba(0,0,0,0.4);
    box-shadow: 0px 0px 25px -2px rgba(0,0,0,0.4);
}

【问题讨论】:

  • 没有为我加载实时示例。
  • 就个人而言,我认为您的代码或其工作方式没有任何问题。
  • 由于某种原因它在 Safari 上闪烁。

标签: javascript jquery css animation jquery-animate


【解决方案1】:

要启用硬件加速,可能可以解决问题,请将 3D 翻译添加到您的 CSS 类。

transform: translate3d(0,0,0);
-webkit-transform: translate3d(0,0,0);

【讨论】:

    【解决方案2】:

    hover() 事件会在您将鼠标移到该元素上时触发。我宁愿像这样使用 mouseEnter() 和 mouseOut() 事件:

    $(".testimonial").mouseenter( function() {
        $(".testimonial").removeClass('testimonialActive').addClass('testimonialNotActive');  // also removeing active class
        $(this).removeClass('testimonialNotActive').addClass('testimonialActive');
    }
    
    $(".testimonial").mouseout( function() {
        $(".testimonial").removeClass('testimonialActive').removeClass('testimonialNotActive'); // or whatever class you want to remove
    }
    

    【讨论】:

    • 当您将鼠标位置从一个元素更改为另一个元素时,或者当您在一个元素上移动时,它是否会闪烁?因为这对我有用:jsfiddle.net/BvLFA/1(在 opera 和 firefox 上测试)
    • 这就是为什么!它闪烁是因为你从一个悬停在它们之间的空间上移动是什么造成了闪烁,关于这个伙伴有什么想法吗?
    • 是的,您需要设置“关闭那些类”的功能,并以小延迟调用该功能。接下来,您需要设置某种储物柜,它会告诉您当前的鼠标位置(它是在元素上还是在元素外)。比功能只是控制鼠标位置,如果鼠标不在元素上方,则关闭。我希望你从我的例子中更好地理解它,它肯定更清楚:jsfiddle.net/BvLFA/6