jquery - Apple store like sidebar with css swapping jquery 技术

标签 jquery css

我希望使用 jquery 创建一个 div,它将在滚动时保持固定,就像在 apple store 中一样:

http://store.apple.com

将任何产品添加到购物车,您会看到它出现在右侧的 div 中,如果您向下滚动页面,它会留在原处。

我在这里找到了这个解决方案:

Swap CSS class on the basis of Scroll Position with Javascript

但是该解决方案存在两个问题。

1) 它不适用于更新的 jquery 版本(在我的例子中是 1.5.1)

2) 我还希望效果只在某个 div 或 td 内起作用,因此当您向下滚动时到达该父 div 或 td 的末尾时,它会停在那里。换句话说,我不希望这个固定的 div 在用户一直向下滚动到页面末尾的情况下覆盖我的页脚内容...

我愿意接受来自像您这样的专业人士的任何解决方案、建议、教程和指导!

提前致谢!

最佳答案

我不能说代码不能与新版本的 jQuery 一起工作。看起来什么都没有改变。

为了让 child 留在一个单元格中,您可以使用这种方法进行定位:

function fixInParent(selector) {
    var $el = $(selector);

    $(window).scroll(function() {
        if($el.parent().offset().top > $(this).scrollTop())
            $el.addClass('top').removeClass('floating').removeClass('bottom');
        else if ($(this).scrollTop() + $el.height() < $el.parent().offset().top + $el.parent().height())
            $el.addClass('floating').removeClass('top').removeClass('bottom');
        else
            $el.addClass('bottom').removeClass('top').removeClass('floating');
    });
}

这(虽然未优化)进行两项检查。首先,如果页面尚未滚动到父元素的顶部,它会将类设置为“top”。这会像 position: absolute;顶部:0

如果失败,它会检查具有固定位置的元素的底部(屏幕顶部 + 高度)是否低于其父元素的底部(父元素的顶部 + 父元素的高度)。如果不是,我们将类设置为“ float ”,它有 position: fixed;顶部:0

否则,我们不希望该元素超出其父级,因此我们将类设置为“底部”。这会像 position: absolute;底部:0;

更新 示例代码在这里:http://fiddle.jshell.net/uyBRA/2/ float div 在第二个 block 中。

关于jquery - Apple store like sidebar with css swapping jquery 技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7761643/

相关文章:

javascript - JQuery 选择框和循环帮助

asp.net - 有没有办法将 Thickbox 与动态内容一起使用?

jquery - Gist/Github API - 获取私有(private)和公共(public) Gist

html - CSS - 使用 border-left 和 border-bottom 后的 Curved Corner

html - CSS 样式最佳实践

php - CSS Div 表格位置问题

php - 航点无限滚动仅添加更多数据一次

javascript - 如何检查一个分区中的所有单选按钮组是否都被选中?

css - 在 CSS 中 float

html - Internet Explorer 中选择标签选项中的 CSS 伪元素