动画绝对定位的div,但如果条件为真则停止?

Posted

技术标签:

【中文标题】动画绝对定位的div,但如果条件为真则停止?【英文标题】:Animate absolutely positioned div, but stop if a condition is true? 【发布时间】:2011-03-03 04:18:45 【问题描述】:

我有一个 div 放在网站的右上角,绝对位于 top: 0pxright : 0px。我想使用 jquery 的 animate 函数在单击按钮时将 div 向左或向右设置一定量的动画,但如果在任何时候,div 向左或向右的偏移量小于某个数字,则停止动画。我想这样做是为了容纳多次单击向左或向右按​​钮的用户,这样 div 就不会飞出视线。如何做到这一点?下面是我的相关css、html和jquery代码:

CSS:

  #scorecardTwo 
    position:absolute;
      padding:5px;
      width: 300px;
      background-color:#E1E1E1;
      right:0px;
      top:0px;
      display:none;
  

HTML:

        <div id = "scorecardTwo"> 
            <span id = "dealHolder"><a href="some/link">some text</a></span>
            <br />
            <span id = "scoreHolder">some text</span>
            <br />
            <button type="button" id="moveLeft">Left</button>&nbsp;<button type="button" id="moveRight">Right</button>
        </div>

jQuery(目前):

    $("#scorecardTwo").fadeIn("slow");

    $("#moveLeft").bind("click", function() 
            $("#scorecardTwo").animate("right":"+=76%", "slow");
                            // how to stop animation if offset is less than appropriate number?
    );

    $("#moveRight").bind("click", function() 
            $("#scorecardTwo").animate("right" : "-=76%", "slow");
                            // how to stop animation if offset is less than appropriate number?
    ); 

【问题讨论】:

【参考方案1】:

一种方法是在单击一次时删除按钮上的事件侦听器,这样用户就不能再次单击:

$("#moveLeft").bind("click", function() 
    $("#scorecardTwo").animate("right":"+=76%", "slow");
    $(this).unbind('click', arguments.callee);
);

另一种方法是检查每个步骤的位置:

$("#moveLeft").bind("click", function() 
    $("#scorecardTwo").animate("right":"+=76%", 
        speed: "slow",
        step: function(right) 
            if (right >= 70)  // stop at ~70
                $("#scorecardTwo").stop();
            
        
    );
);

【讨论】:

以上是关于动画绝对定位的div,但如果条件为真则停止?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery - 显示滑动面板时动画绝对定位的 div 的“左”位置

CSS样式当时 CSS定位 绝对定位

HTML中相对定位和绝对定位(absolute,relative)

三元运算符,如果为真则返回检查条件的快捷方式?

如何在保持绝对定位的同时对依赖于其他元素的文本进行动画处理

如何使用css中的绝对位置将子div定位到每个父div的中心[重复]