javascript - 防止滚动 - JQuery

标签 javascript jquery html css

我尝试使用 JQuery e.preventDefault(); 来阻止滚动,但什么也没发生,我需要的是停止滚动,当动画 div 出现在屏幕右侧时,滚动必须工作:

$(document).ready(function () {
    $(window).on('scroll', function (e) {
        var animation = $(".my-container .animation"),
            windowScroll = $(window).scrollTop();
        if (parseInt(animation.css('left')) + animation.width() < $(window).width()) {
            e.preventDefault();
            animation.css('left', windowScroll * 1.5);
        }
        else {
            // enable scroll
        }
});
})
.my-container{
    width:100%;
    height:620px;
    position:relative;
    overflow:hidden;
    background-color:#333333;
}
.my-container .animation{
    position:absolute;
    width:420px;
    height:200px;
    bottom:0;
    left:0;
    background-color:#02f15f;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<section class="my-container">
  <div class="animation"></div>
</section>

请全屏运行代码片段

最佳答案

您必须使用 $(window).scrollTop(windowScroll); e.preventDefault 来设置滚动条:

见下面的例子:

$(document).ready(function () {
    var windowScroll = $(window).scrollTop();
    $(window).on('scroll', function (e) {
        var animation = $(".my-container .animation");
            
        if (parseInt(animation.css('left')) + animation.width() < $(window).width())         {
            var scrl = $(window).scrollTop();
            $(window).scrollTop(windowScroll);
            //console.log(parseInt(animation.css('left')));
            animation.css('left', parseInt(animation.css('left')) + (scrl * 1.5));
        }
        else {
            // enable scroll
        }
});
})
body{
  height:2000px;
}

.my-container{
    width:100%;
    height:400px;
    position:relative;
    overflow:hidden;
    background-color:#333333;
}
.my-container .animation{
    position:absolute;
    width:420px;
    height:200px;
    bottom:0;
    left:0;
    background-color:#02f15f;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<section class="my-container">
  <div class="animation"></div>
</section>

关于javascript - 防止滚动 - JQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43568870/

相关文章:

javascript - 来自字符串的 JSON 数组

javascript - jQuery:删除浏览器生成的标题属性

javascript - 如何根据 WP Divi 主题中的事件 slider 颜色类将 AddClass 添加到主体

jquery - 如何使用 jquery 显示图像的一部分?

javascript - 如何通过查询字典数组中的键/值来查找 Sequelize 中的实例

javascript - 对特定 CSS 背景图像应用效果

javascript - 从减速度方程求速度

jquery - 跟踪 jQuery css 更改的位置

javascript - 将\n\r 转换为字符串在 jquery 中没有任何作用

javascript - 使用变量从 html 表中选择一行