2

这里有一些基本的 JS,我想滑出而不是仅仅出现(看起来有问题)

我已经尝试了一些东西,但无法管理它,有什么想法吗?下面是 Jsfiddle 后面的代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<style>
body{margin:0;}
#foo{min-width:400px; height:100%; background-color:#9C0; display:none; position:absolute; right:0px; top:0px;}


</style>
<body>
<a href="#" onclick="toggle_visibility('foo');">Click here to toggle visibility of element #foo</a>
<div id="foo" >



</div>


<script type="text/javascript">
<!--
    function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }
//-->
</script>
</body>
</html>

提琴手

4

3 回答 3

5

我已经更新了你的小提琴,使用 VanillaJS ,你可以在这里看到它工作得很好

document.getElementById('bar').onclick = (function()
{
    var that, interval, step = 20,
    id = document.getElementById('foo'),
    handler = function()
    {
        that = that || this;
        that.onclick = null;
        id = document.getElementById('foo');
        interval =setInterval (function()
        {
            id.style.right = (parseInt(id.style.right, 10) + step)+ 'px';
            if (id.style.right === '0px' || id.style.right === '-400px')
            {
                that.onclick = handler;
                clearInterval(interval);
                if (id.style.right === '-400px')
                {
                    id.style.display = 'none';
                }
                step *= -1;
            }
            else
            {
                id.style.display = 'block';
            }
        },100);
    };
    return handler;
}());

代码解释:

  • 在 JS 中附加点击处理程序,因为我们将不得不动态取消绑定/绑定它
  • 我没有直接分配处理程序,而是使用闭包(用于间隔和 DOM 引用)
  • handler是实际的事件处理程序,它将其上下文(单击的元素)分配给that,因此我们可以在间隔回调中引用它并取消绑定处理程序。
  • 间隔以step像素为单位改变元素的位置(将此值设置为您喜欢的任何值)。
  • 如果 div 位于位置 0 或 -400,则取消间隔(这就是我们需要闭包的原因,以将间隔 ID 保持在范围内,但不全局公开),并重新绑定点击处理程序step *= -1,以反转动画
  • 设置显示属性

此间隔序列设置为每 100ms 发生一次,这有点不稳定,将值降低set到 10,并将间隔设置为50应该使事情变得平滑

于 2013-07-04T10:21:17.147 回答
1

如果我理解正确,请使用 jQuery 进行滑动效果。

JsFiddle。

JS:

$("a").on('click', function() {
    $("#foo").slideToggle();
});
于 2013-07-04T10:08:25.467 回答
-1

我已经更新了你的小提琴以使用 jQuery;http://jsfiddle.net/wRWHw/2/

   function toggle_visibility(id) {
        $("#" + id).slideToggle("slow");
    }
于 2013-07-04T10:11:21.507 回答