在 div 之间滑动重复的背景图像

发布于 2024-12-23 22:27:26 字数 266 浏览 1 评论 0原文

如何使用 jQuery 创建在 div 之间滑动重复背景图像的效果?

看看我制作的这个简单的fiddle。我将 addClass / removeClass jQuery 函数与 CSS 结合使用来更改具有背景图像的 div。一切都很好。

但是如果我想为每个 div 之间的背景图像滑动设置动画该怎么办?

How can you use jQuery to create the effect of sliding a repeated background-image between divs?

Take a look at this simple fiddle I made. I'm using the addClass / removeClass jQuery functions in combo with CSS to change which div has the background-image. That all works fine.

But what if I wanted to animate the sliding of the background image between each div?

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

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

发布评论

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

评论(1

倾城月光淡如水﹏ 2024-12-30 22:27:26

您可以制作一个背景 div,在文本后面获取动画:

JS--

var $menu = $('#menu'),
    $bg   = $menu.children('.bg');
$menu.children().not($bg).click(function() {
    var $this = $(this);
    $menu.children('.active').removeClass('active');
    $this.addClass('active');
    $bg.css('opacity', 0.5).stop().animate({
        left : $this.offset().left
    }, 500, function() {
        $(this).stop().animate({ opacity : 1 }, 250);
    });
});

HTML--

<div id="menu">
    <div class="active">
        Item 1
    </div>
    <div>
        Item 2
    </div>
    <div>
        Item 3
    </div>
    <div class="bg"></div>
</div>

CSS--

#menu {
    position : relative;
    z-index  : 1;
}

#menu > div {
    z-index     : 2;
    display     : inline-block;
    height      : 50px;
    width       : 150px;
    text-align  : center;
    line-height : 2;
}

#menu .bg {
    position   : absolute;
    z-index    : -1;
    top        : 0;
    left       : 0;
    background : transparent url('http://alexcoplan.co.uk/resources/active.png');
}

这是一个演示: http://jsfiddle.net/Hwvsb/3/

You can make a background div that gets animated behind the text:

JS--

var $menu = $('#menu'),
    $bg   = $menu.children('.bg');
$menu.children().not($bg).click(function() {
    var $this = $(this);
    $menu.children('.active').removeClass('active');
    $this.addClass('active');
    $bg.css('opacity', 0.5).stop().animate({
        left : $this.offset().left
    }, 500, function() {
        $(this).stop().animate({ opacity : 1 }, 250);
    });
});

HTML--

<div id="menu">
    <div class="active">
        Item 1
    </div>
    <div>
        Item 2
    </div>
    <div>
        Item 3
    </div>
    <div class="bg"></div>
</div>

CSS--

#menu {
    position : relative;
    z-index  : 1;
}

#menu > div {
    z-index     : 2;
    display     : inline-block;
    height      : 50px;
    width       : 150px;
    text-align  : center;
    line-height : 2;
}

#menu .bg {
    position   : absolute;
    z-index    : -1;
    top        : 0;
    left       : 0;
    background : transparent url('http://alexcoplan.co.uk/resources/active.png');
}

Here is a demo: http://jsfiddle.net/Hwvsb/3/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文