如何在达到特定点时修正div的位置

时间:2012-06-09 14:36:12

标签: jquery css-position

我不能100%确定问题标题是否准确,所以如果有人能够准确解释我想要做的事情,我愿意改变。

我有一个div包含第一张图像下每个“项目”的图像和副本,我想要做的是位置:当项目的第一个图像到达某个点时修复div,到目前为止我已经管理过当页面向右滚动时。

工作原理

它检查div的左侧位置最初固定的div,然后如果它足够接近(fixedLeft + 400),则类交换,被卡住的原始div继续它的快乐方式和新一根棍子。

虽然没有经过彻底的测试,但效果很好,我将不得不进行一些调试,但是我试图让它重新回到原点。

这是我的小提琴 - 大版本=图片可能太大http://fiddle.jshell.net/tara_irvine/d5VdF/12/show/

以及代码http://jsfiddle.net/tara_irvine/d5VdF/12/

的小提琴部分

代码中删除了大量内容,因为我的内容是动态的,所有内容(内容和副本)都是基于隐藏的导航,因此可能会被忽略。

即使有人可以通过它应该如何工作的逻辑来与我交谈。

我真的希望有人可以提供帮助。 非常感谢

1 个答案:

答案 0 :(得分:1)

为每个li元素添加行为似乎是一种解决问题的奇怪方法。我最初将第一个复制容器设置为固定副本,然后在$(window).scroll中设置一个$(document).ready并跟踪它的偏移量。达到某个阈值后,更改类。这也应该更容易逆转。

更新:这对我有用

$(document).ready(function(){
    $(window).scroll(function (){   
        var offset = $(".fixed-copy").offset().left;
        $(".fixed-copy").find(".offsetLeftGroupPrev").html(offset);     
        var next = $(".fixed-copy").parents("ul").next("ul.imgGroup").find(".copy-container");      
        var prev = $(".fixed-copy").parents("ul").prev("ul.imgGroup").find(".copy-container");  

        if(offset > next.offset().left){
            $(".fixed-copy").removeClass("fixed-copy");
            next.addClass("fixed-copy");
        }   

        if(prev!=null && prev.offset() != null){    
            if(offset < prev.offset().left){
                $(".fixed-copy").removeClass("fixed-copy");
                prev.addClass("fixed-copy");
            }
        }
   });  
});