需要时移动 div

Posted

技术标签:

【中文标题】需要时移动 div【英文标题】:moving a div when required 【发布时间】:2013-05-31 15:04:16 【问题描述】:

我想将一个 div 向上/向下移动到另一个 div。就像网站上的新闻和事件 div neduet(屏幕下方) 我在网上搜索并找到了一些很好的链接 herehere 但问题是如果我click up up up 它会上升并在某个时候消失。 我想要的是当我按下或悬停按钮时,它会检查 div 位置。如果 div 被隐藏,那么它应该向上移动,否则不应执行任何操作。 neduet 的链接就是一个很好的例子。

编辑: 我是 javascriptjquery 的新手,所以一个工作示例或链接可能会有所帮助。

【问题讨论】:

不看他们的代码,你认为这可以通过一个 div 来完成吗?有一个溢出,并控制溢出的滚动?我觉得我过去以这种方式做到了这一点。编辑:见***.com/questions/13362/… 您是否尝试过使用 offset()、position()、scrollTop() 等来检查您正在移动的 div 的位置? 检查div的位置是否会消失然后执行动作。 使用一个容器 div,您将允许您的 div 在其中移动。使用该容器来定义边界。禁用该容器外的 div 移动。 参考可以看这篇帖子***.com/questions/11970074/… 【参考方案1】:

我的数学不是最好的,但基本上你需要找出你的滚动内容移动了多少,并在它向上或向下移动太多时阻止它移动。我已经创建了与您可能想要实现的目标类似的东西,这里是http://codepen.io/lukeocom/pen/nHuri

我得到容器的高度和内容的高度,然后检查内容滚动的量减去容器的高度,是否小于内容的高度。这对我数学弱的大脑来说非常混乱,但也许你可以想出一个更简单的方法。无论如何,我的例子有效。

您需要注意滚动内容的程度、动画完成的速度以及触发间隔的频率。

我将尝试清理工作代码示例,但在这里...

var scrollamnt = 0, timer, $content = $('#content');
var theoff, scroll = true;

var sHeight = $content.height(), 
    cHeight = $('#scrollC').height(),
    oHeight;

$('#up, #down').bind('mouseover', function() 
    $this = $(this).attr('id');

    timer = setInterval(function() 
        theoff = $content.offset();      
        oHeight = (-theoff.top + cHeight);


      if ($this === 'down' && (oHeight < sHeight)) 
            scrollamnt -= 10;
            scroll = true;
         else if ($this === 'up' && scrollamnt < 0) 
            scrollamnt += 10;
            scroll = true;
         else
            scroll = false;

        if (scroll) 
            $content.animate(
                'margin-top' : scrollamnt
            , 0, 'linear');
            //end animate
        //end if
    , 10);
    //end interval*/

).bind('mouseout', function() 
    clearInterval(timer);
); 

【讨论】:

+1 您的示例看起来很完美。今晚晚些时候我会看到这个。谢谢 我也想要 1 个水平的。所以我努力了codepen.io/anon/pen/DipEG,但是如何在内容中添加水平而不是垂直的图像 好问题!一种方法是设置宽度,例如 1500px。但是可能有更好的方法...codepen.io/lukeocom/pen/Egfks 它在我的页面中不起作用,图像没有加载到内容 div 中,mouseOver 也不起作用。我是否需要为此使用任何 jquery 链接等。我的页面已经包含 1.9.1 和 1.3.2 的两个 jquery 链接。 只使用最新的jquery CDN,2.0.0。您只需要包含一个版本。访问 scriptsrc.net 或 developers.google。您需要将脚本包含在 $(document).ready(function());

以上是关于需要时移动 div的主要内容,如果未能解决你的问题,请参考以下文章

单击另一个 div 时,移动到具有类的下一个 div

如何在滚动时从左到右移动 div?

jquery在可见时移动div

div随鼠标移动

droppable draggable 移动时重叠 div

CSS only:当宽度改变时向上移动 flexbox 的 2. item