背景上的jQuery动画方法

Posted

技术标签:

【中文标题】背景上的jQuery动画方法【英文标题】:Jquery Animation Method on Background 【发布时间】:2011-12-15 21:18:31 【问题描述】:

为帮助新手的善良灵魂提供的简单问题和要点。

我正在使用 Wordpress,jQuery 已正确加载到标题中。

我有一个 1600x2000px bg-image 的 ul。我想将背景位置更改-500px,以创建类似于购物中心广告板的滑动效果。如果是 :last-child,而不是 -500,它将 +1500(回滚到顶部),但我想我可以自己处理 if/else,只是无法让 .animate() 运行。

html

<ul id="indexSlides">
    <li id="messageBox">
    </li>
    <li id="slideA">
      <p>Some Text</p>
    </li>
    <li id="slideB">
      <p>Some more Text</p>
    </li>
    <li id="slideC">
      <p>Some different Text</p>
    </li>
    <li id="slideD">
      <p>Some Text</p>
    </li>
</ul>

CSS:

ul#indexSlides 
    height: 500px;
    background: url('images/slides.jpg') 0 0 no-repeat transparent;


ul#indexSlides > li > p 
    display: none;

jQuery:

<script type="text/javascript">

// function to slide the background of the list

jQuery(document).ready(function($) 

setInterval(function() 
    $("#indexSlides").animate(
        top: '-=500',
     , 
        duration: 1500,
    
, 5000),
);

</script>

提前感谢您的帮助。

【问题讨论】:

你介意创建一个jsfiddle吗? 【参考方案1】:

您缺少一个括号,有一个额外的逗号或 2,以及一个逗号而不是分号:

jQuery(document).ready(function($) 
   setInterval(function()  
    $("#indexSlides").animate(
            top: '-=500'
         , 
            duration: 1500
        );
    , 5000);
);

编辑: 这是一个使用 2 个 div 的示例:http://jsfiddle.net/fehays/yXLv3/1/

内部 div 是整个背景图像的高度。外部 div 的高度为一张幻灯片和一个 overflow:hidden ,因此您只能看到一张。

【讨论】:

我现在看到内联样式改变了 Firebug 的顶部位置,但 bg-image 没有移动。我需要绝对定位列表吗? 不,你必须做其他事情。我不相信您可以为背景图像位置设置动画。我认为您需要包含背景图像的 ul “下方”另一个元素。然后你就可以制作动画了。 查看我的编辑。这可能是你的一个选择。另外,@Richard 提到的插件是一个很好的解决方案。 因此,如果我将 ul 包装在具有固定高度并隐藏溢出的包含 div 中,将 lis 设置为包含 div 的高度并具有背景图像,然后为 ul 的顶部设置动画,它应该可以工作?编辑:提问前应该刷新一下,3分钟前你的回答就是这个问题的答案。 技术上是的,但是当您为 设置动画时, 也会随之设置动画,而您在第一次移动后将看不到它们。 【参考方案2】:

我相信你必须使用background-positions animation jQuery plugin。

在这里,没有插件就无法工作:http://jsfiddle.net/pLx2H/

在这里,使用插件:http://jsfiddle.net/pLx2H/1/

另见jquery animate background position。

【讨论】:

我不想使用插件,因为它看起来应该是一项简单的任务,并且我将与回调链接在一起的 4 个或动画。这是第一个。根据 jQuery .animate() 文档,您可以使用我正在尝试实现的方法。 JQuery 没有内置对背景位置动画的支持,所以是的,你确实需要这个插件。 知道了,谢谢。我想我会使用@fehays 方法。我想使用精灵来确保一旦动画开始,所有图像都会被加载。

以上是关于背景上的jQuery动画方法的主要内容,如果未能解决你的问题,请参考以下文章

Jquery淡入淡出背景/表格行上的动画背景颜色

悬停(jQuery)上的动画过渡[关闭]

可以使用 jQuery 的动画移动 HTML 背景吗?

jQuery同时动画和淡化背景图像

如何在jQuery中为背景属性设置动画?

在图像上具有不透明度的 jQuery 动画以相同的动画时间以不同的速度显示它们