首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery .animate()背景图像条件语句

问jQuery .animate()背景图像条件语句
EN

Stack Overflow用户
提问于 2012-04-04 02:59:20
回答 2查看 627关注 0票数 0

我正在尝试制作一个窗帘效果,当函数在窗帘落下时执行时,它将上升,反之亦然。这就是我到目前为止所拥有的。

HTML

代码语言:javascript
复制
<div id="curtain"></div>

CSS

代码语言:javascript
复制
#curtain {
    width: 791px;
    height: 449px;
    background: url(/assets/curtain.png) no-repeat;
    position: absolute;
    top: 111px;
    left: 265px;
    z-index: 2;
    overflow: hidden;
}

jQuery

代码语言:javascript
复制
function curtain() {
    if ($('#curtain').css('backgroundPosition') === '0 0') { 
        $(this).stop().animate(
        {backgroundPosition:"(0 -250px)"}, 
        {duration:500})
    } else {
        $('#curtain').stop().animate(
        {backgroundPosition:"(0 0)"}, 
        {duration:500})
    }
}

$("#wall-right").click(function() {
    $("#frame").attr('src', 'http://player.vimeo.com/video/27748543');
    curtain();
});

什么都没有发生,并且我在控制台中没有得到任何错误。你知道为什么这不起作用吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-04 03:32:12

我做了一些修改,但我仍然不确定这是不是浏览器安全的。

在开始时使用closed类更新您的超文本标记语言结构。

代码语言:javascript
复制
<div id="curtain" class="closed"></div>

​并更新您的JavaScript。

代码语言:javascript
复制
var $curtain = $("#curtain");
var curtain = function() {
  var isClosed = $curtain.hasClass('closed');
  if (isClosed) {
    $curtain.removeClass("closed").stop().animate({
      "background-position-y" : "-250px"}
    , 2000);
  } else {
    $curtain.addClass("closed").stop().animate({
      "background-position-y" : "0px"}
    , 2000);
  }
};

你的情况一开始就是错的,而且从来没有触发过。此外,我还更改了动画选项,使其不那么杂乱。

票数 1
EN

Stack Overflow用户

发布于 2012-04-04 22:22:37

对于任何有同样问题的人来说,这就是最终对我有效的方法。

代码语言:javascript
复制
var $curtain = $("#curtain");   
var $frame = $("#frame");
var $url = '';

function curtainOpen() {
    $frame.attr('src', $url);
    $frame.load(function(){
        $curtain.removeClass("closed").addClass("open").stop().animate({
            "background-position" : "0 -370px"}, 2000);
    });
};

function curtainClose() {
    $curtain.removeClass("open").addClass("close").stop().animate({
        "background-position" : "0 0"}, 2000, function(){
            curtainOpen();
        });

};

function curtain() {
    var isClosed = $curtain.hasClass('closed');
    var isOpen = $curtain.hasClass('open');         
    if (isClosed) { 
        curtainOpen();
    } else if (isOpen) {
        curtainClose();
    }
};

$("#wall-left").click(function() {
        $url = "http://player.vimeo.com/video/27748544";
        curtain();
});

$("#wall-right").click(function() {
        $url = "http://player.vimeo.com/video/27748543";
        curtain();
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9999619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档