【问题标题】:jquery click for css image based hover?jquery click for css image based hover?
【发布时间】:2014-04-03 05:08:50
【问题描述】:

我有一个页面,其中.button 将用作虚拟按钮。单击后,它将移动背景图像以执行“悬停动画”。

但是我得到的代码似乎不想做任何事情,并且没有列出任何错误。

    $(".button").click(function(){
        $(this).css('backgroundPosition', '-468px 0').delay(200).css('background-position', '0 0');
    });

我也试过

    $(".button").each(function(){
        $(this).click(function(){
            $(this).css('backgroundPosition', '-468px 0').delay(200).css('background-position', '0 0');
        });
    });

也试过了

    $(".button").each(function(){
        $(this).click(function(){
            $(this).stop().animate({backgroundPosition: "-468px 0"}, 100);
        });
    });

CSS

.button {
    color: #4e5645;
    font-family: 'Roboto', sans-serif;
    text-shadow: 0px 0px 1px #b3c799;
    text-align: center;
    font-size: 32px;
    font-weight: bold;
    height: 120px;
    width: 468px;
    line-height: 120px;
    background: url(button_hover.png) no-repeat;
    cursor: pointer;    
}

HTML

            <div class="buttonc">
                <div class="button">TAX PEOPLE</div>
            </div>

有什么想法吗?是的,jQuery 核心已正确链接并用于其他功能。

编辑:作为以下解决方案的替代方案,我今天在自己的写作中偶然发现了这一点……有趣的是,我昨晚没想到悬停按钮。哇。

    $(".rightctext").click(function(){
        var div = $(this);
        div.css('text-shadow', '0px 0px 20px #fbf5df');
        setTimeout(function(){
            div.css('text-shadow', '0px 0px 10px #474333');
        }, 200);
    });

【问题讨论】:

  • 你的Html和css代码呢,可以分享一下吗?
  • 我想不确定这对 javascript 方面有何影响。您只需使用名称来调用它,CSS 不应干扰。一秒钟。
  • 看来我忘了在我的 JS 中声明像素。

标签: jquery css image hover click


【解决方案1】:

延迟仅对动画有效,.css 立即更改。相反,您可以使用动画完成后执行的animate 回调函数。我想这就是你所追求的:

$(".button").click(function(){
     $(this).animate({'background-position-x': '-468px'},200, function(){
         $(this).animate({'background-position-x': '0px'},200);
     });   
 });

编辑: 没有动画:

 $(".button").click(function(){
     $(this).animate({'background-position-x': '-468px'},0).delay(200).animate(
         {'background-position-x': '0px'},0);   
 });

乔丹编辑:

我偶然发现的替代方法,好像我昨晚从未遇到过这个问题......想知道睡眠可以做什么。再次感谢大家的帮助。

    $(".button").click(function(){
        var div = $(this);
        div.css('background-position-x', '-468px');
        var end = setTimeout(function(){
            div.css('background-position-x', '0px');
            clearTimeout(end);
        }, 200);
    });

【讨论】:

  • 这是一个很好的解决方法,因为它可以工作,但我注意到它会滚动图像,而不是像它需要的那样立即改变(它是一个按钮,一个颜色不那么彩色,一个彩色。)我一直在查看toggleClass,但我试图弄清楚如何在单击后不久正确删除添加的类。
  • 如果您使用动画,您可以使用延迟。除了延迟部分之外,您的原始代码有效。它只是更改 css,然后立即更改回来,所以看起来它什么也没做。试试我的编辑。
  • 天哪!你做到了!我正在尝试查看其他代码中发生了什么变化,以使其像应有的那样快速。
【解决方案2】:

你忘了输入“px”。

$(this).css('background-position', '-468px 0px').delay(200).css('background-position', '0px 0px');

【讨论】:

  • 是的,刚刚注意到。加了,还是不行。 “0”和“0px”解释相同。
猜你喜欢
  • 2011-08-15
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多