【问题标题】:move element right and left while scrolling issue滚动问题时左右移动元素
【发布时间】:2016-04-09 14:32:27
【问题描述】:

在此示例中,我试图在上下滚动时左右移动元素FIDDLE 问题是 div 将继续移动以伸出页面并且不会返回其原始位置。这是我试图模拟的例子Original Example

HTML

<div class='container'>
<div class='inner'>
</div>
</div>

JS

var lastScrollTop = 0;
$(window).scroll(function(event){
var st = $(this).scrollTop();
if (st > lastScrollTop){
    var offset = $(".inner").offset();
    var w = $(window);
    var x = offset.left;
    console.log(x);
    $(".inner").css("left",x+50);
} else {
    var offset = $(".inner").offset();
    var w = $(window);
    var y = offset.left;
    console.log(y);
    $(".inner").css("left",y-50);
}
lastScrollTop = st;
});

CSS

.container{width:100%; position: relative; float:left; background:#fff; height:1200px;}
.inner{width:150px; height:100px; position:absolute; top:20%; left:10%; background:red;}

【问题讨论】:

    标签: javascript jquery css animation scroll


    【解决方案1】:

    您需要将其偏移滚动量,而不是每次移动一个量。您正在排队多次移动并每次添加 50px。

    var offset = $(".inner").offset();
    $(window).scroll(function(event) {
      var st = $(this).scrollTop();
      $(".inner").css("left", st + offset.left);
    });
    

    JSFiddle: https://jsfiddle.net/TrueBlueAussie/x0vtopzv/1/

    锁定滚动后,您可以使用 st 值上的乘数来调整位置。

    注意: JSFiddle 在body 上有 8px 的边距。这会抛出偏移位置,需要删除或考虑在内。

    https://jsfiddle.net/TrueBlueAussie/x0vtopzv/6/

    【讨论】:

    • 它可以工作,但它不会回到原来的地方看到这个jsfiddle.net/x0vtopzv/5
    • 这可能是由于样式给出了不正确的左偏移。让我看看:)
    • @PHPUser:是的。 JSFiddle 在body 上有 8px 的边距。 jsfiddle.net/TrueBlueAussie/x0vtopzv/6 那会抛出偏移位置,需要删除或考虑。
    • 我有一个带有引导程序的页面,但有同样的问题,虽然 body 和 html 是 0 margin 0 padding 有什么办法可以调整这个吗?我已将 var st = $(this).scrollTop() 更改为 var st = $(this).scrollTop()-50 并在大屏幕上工作,但在平板电脑和手机上它移到了左侧
    • @PHPUser:我看过代码,它遍历祖先来计算元素的正确偏移量,但不记得细节。开始谷歌搜索那个问题? :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 2012-12-08
    相关资源
    最近更新 更多