【问题标题】:jquery switchClass transition - background-imagejquery switchClass 转换 - 背景图像
【发布时间】:2012-10-16 21:22:42
【问题描述】:

我在使用 switchClass 方法时遇到了一些问题。 当鼠标悬停在类newsArea 时,我想添加/删除一个css类(newsHover)并进行一些转换。

我有以下代码

$('.newsArea').mouseover(function(){
        $(this).switchClass('','newsHover',500, 'linear');
 }).mouseleave(function(){
        $(this).switchClass('newsHover','',500);
});

我认为这些方法是正确的,如您所见: http://docs.jquery.com/UI/Effects/ClassTransitionshttp://jqueryui.com/docs/switchClass/

newsHover 类有一个背景图片:

.newsHover{        
        background-image: url("../../images/newsArea-hover.png"); 
        background-repeat: no-repeat; 
        background-position:left top;
        width: 200px; height: 52px;            
      }

图像出现但没有任何过渡。它在 500 毫秒后出现。

我可以接受任何使用 css3 跨浏览器的解决方案。

这里有什么提示吗??

谢谢

编辑

我忘了告诉我我使用的是 1.7.2 jquery 版本; jquery.easing.1.3 和 jquery-ui-1.8.23.custom.min(选择了所有组件)

【问题讨论】:

标签: jquery background jquery-animate css-transitions toggleclass


【解决方案1】:

仅供参考,您描述的行为完全符合预期。 switchClass 函数只是更改在“过渡”结束时无法动画化的属性。 switchClass 不支持动画背景图片。

并非所有样式都可以设置动画。例如,没有办法 为背景图像设置动画。任何无法动画的样式都将 在动画结束时更改。

来自 [http://api.jqueryui.com/switchClass/][1]

【讨论】:

    【解决方案2】:

    有一个初始类可以切换 -

    $('.newsArea').mouseover(function(){
            $(this).switchClass('oldClass','newsHover', 500);
     }).mouseleave(function(){
            $(this).switchClass('newsHover','oldClass',500);
    });
    

    也许图像在您应用后需要一些时间来加载?

    所以你可以试试..

    .oldClass{
      background-image: url("../../images/newsArea-hover.png"); 
      background-size:0px;
    }
    .newsHover{        
       background-size: auto;     
    }
    

    【讨论】:

    • 第一个代码块不起作用。如果您可以从我给您的第二个链接分析源代码,您可以看到类似的内容。关于我没有尝试过的第二个块,但我猜它会改变我的 .newsArea 类中文本的不透明度。所以这不是一个解决方案。谢谢
    • @user794035:我怀疑是这样。我删除了opacity 位是出于另一个原因,我认为这可能会导致您的图像需要时间加载?
    • 谢谢。同时,如果您有任何其他想法,请随时分享。