jquery 简单地对 div 内的 css 背景图像进行动画/旋转?

发布于 2024-09-27 19:14:35 字数 321 浏览 4 评论 0原文

我想知道是否有人可以帮助我,或者为我指出正确的方向。我正在寻找一个 jquery 片段,它将每隔 5 秒左右自动更改 div 的背景图像。我的初始背景图像是在 css 中设置的,但我不确定如何创建函数以使其在图像数组之间交换?

我有 5 张图片:

bg-1.jpg、bg-2.jpg、bg-3.jpg、bg-4.jpg、bg-5.jpg。

目前我的 div 设置为 bg-1.jpg。

<div id="page_bg"></div>

确实没有任何代码可以显示,但希望有人可以帮助我:)

I was wondering if anyone could help me out, or point me in the right direction. I'm looking for a snippet of jquery that will automatically change the background image of a div every say 5 seconds or so. My initial bg image is set in css, but i'm not sure how to create the function to make it swap between an array of images?

I have 5 images:

bg-1.jpg, bg-2.jpg, bg-3.jpg, bg-4.jpg, bg-5.jpg.

Currently my div is set to bg-1.jpg.

<div id="page_bg"></div>

Don't really have any code to show, but hopefully someone can help me out :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦年海沫深 2024-10-04 19:14:35

像这样的东西应该可以解决问题吗?

jQuery( function( $ ) {
    var images = [ "bg-1.jpg", "bg-2.jpg", "bg-3.jpg", "bg-4.jpg", "bg-5.jpg" ];
    var currentImage = 0;

    function changeBackground() {
        $( '#page_bg' ).css( { backgroundImage: 'url(' + images[ ++currentImage ] + ')' } );
        if ( currentImage >= images.length - 1 ) {
            currentImage -= images.length;
        }
    }

    setInterval( changeBackground, 5000 );  
});

Something like this should do the trick?

jQuery( function( $ ) {
    var images = [ "bg-1.jpg", "bg-2.jpg", "bg-3.jpg", "bg-4.jpg", "bg-5.jpg" ];
    var currentImage = 0;

    function changeBackground() {
        $( '#page_bg' ).css( { backgroundImage: 'url(' + images[ ++currentImage ] + ')' } );
        if ( currentImage >= images.length - 1 ) {
            currentImage -= images.length;
        }
    }

    setInterval( changeBackground, 5000 );  
});
つ低調成傷 2024-10-04 19:14:35

如果这些是实际的图像名称,那么您真的不需要数组。

  // cache the element
var $page_bg = $('#page_bg');

setInterval( function() {
    $page_bg.css( 'background-image', function(i,bg) {
       return bg.replace(/\d/, function(str) { return (str % 5) + 1;});
    });
}, 5000);

return (str % 5) + 1;部分,数字5代表图像总数。它们应该像您一样从 1 开始按顺序索引。


编辑: 或者,如果 URL 中的其他位置有数字,则执行以下操作:

  // cache the element
var $page_bg = $('#page_bg');

setInterval( function() {
    $page_bg.css( 'background-image', function(i,bg) {
       return bg.replace(/(\d)(\.jpg)/, function(str,p1,p2) { return ((p1 % 5) + 1) + p2;});
    });
}, 5000);

If those are the actual image names, you really wouldn't need an Array.

  // cache the element
var $page_bg = $('#page_bg');

setInterval( function() {
    $page_bg.css( 'background-image', function(i,bg) {
       return bg.replace(/\d/, function(str) { return (str % 5) + 1;});
    });
}, 5000);

In the return (str % 5) + 1; part, the number 5 represents the total number of images. They should be sequentially indexed starting with 1 like yours are.


EDIT: Or if there will be a number elsewhere in the URL, then do this instead:

  // cache the element
var $page_bg = $('#page_bg');

setInterval( function() {
    $page_bg.css( 'background-image', function(i,bg) {
       return bg.replace(/(\d)(\.jpg)/, function(str,p1,p2) { return ((p1 % 5) + 1) + p2;});
    });
}, 5000);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文