【问题标题】:Help applying a fade to background-position change with Jquery使用 Jquery 帮助对背景位置更改应用淡入淡出
【发布时间】:2010-08-03 14:21:18
【问题描述】:

我对 Jquery 很陌生,但终于弄清楚了如何在将鼠标悬停在单独的“触发”图像上时更改我的#contentContainer 的背景图像(精灵)。但是,对于我的生活,我无法弄清楚如何将淡入淡出效果应用于过渡。基本上,我希望它在鼠标悬停和鼠标移出时平滑淡入,而不是当前突然的背景图像过渡。

这是我的(不褪色但有效)脚本:

var $j = jQuery.noConflict();
$j(document).ready(function(){
$j("#swapTrigger").hover(
function() {
$j("#contentContainer").css("background-position", "0px 1401px");    
},
function() {
$j("#contentContainer").css("background-position", "0px 0px");  
});
});

非常感谢您的帮助!

【问题讨论】:

    标签: jquery hover background-position


    【解决方案1】:

    尝试使用http://api.jquery.com/animate

     $j("#contentContainer").animate({"background-position": "0px 1401px"}, "slow");
    

    【讨论】:

    • 感谢您的回复 Stefan - 不幸的是,我无法让它工作(正如上面 Pat 的建议)。似乎很奇怪 - 不知道为什么......我唯一能想到的(javascript知识非常有限)是因为我的悬停触发元素与要更改的元素(contentContainer)是分开的,所以脚本语法应该与所示示例略有不同?这也许可以解释为什么我的非褪色脚本有效但两个褪色版本都没有?再次感谢!
    • 您可以在上一个版本中进行编辑吗?也许我能看到一些东西。
    【解决方案2】:

    您可以为背景位置属性设置动画,这将使您在 2 个图像之间平滑过渡:

    $j("#swapTrigger").css({backgroundPosition: "0 0"}); 
    $j("#swapTrigger").hover(
        function() {
            $j("#contentContainer").animate({backgroundPosition: "0 1401px"});    
        },
        function() {
            $j("#contentContainer").animate({backgroundPosition: "0 0"});  
        }
    );
    

    如果您的问题是关于在图像在 2 之间切换时淡化图像的不透明度,您无法使用单个元素来解决。您需要将背景图片添加到嵌套元素中,然后将它们淡入淡出:

    <div id="contentContainer">
        Some content
        <div class="bg1"></div>
        <div class="bg2"></div>
    </div>
    

    悬停时,根据需要淡入淡出:

    var bg1 = $('.bg1');
    var bg2 = $('.bg2');
    $j("#swapTrigger").hover(
        function() {
            if(bg1.is(':hidden')){
               bg1.stop().fadeIn();
               bg2.stop().fadeOut();
            } else {
               bg2.stop().fadeIn();
               bg1.stop().fadeOut();
            }   
        }
    );
    

    【讨论】:

    • 感谢您的回复帕特。不幸的是,您的第一个解决方案听起来像是理想的解决方案对我不起作用-不知道为什么(已经尝试过几次)。可以尝试您的第二种方法,尽管不希望添加到我的标记中(因为它在 mo 的所有浏览器中都可以正常工作!)。再次感谢!
    • 我完全理解不想添加更多标记。查看我的编辑,看看他们是否会帮助你。我在动画之前添加了一组明确的背景位置。出于好奇,当您将鼠标悬停在 #swapTrigger 元素上时,您的背景位置是否有动画?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    相关资源
    最近更新 更多