javascript - 使网页的特定部分可滚动

标签 javascript jquery html css

我有一个特定的页面,只需通过点击 即可完成导航。

为此,我设置了以下 css:

body{
    overflow:hidden;
}

现在,要导航到我页面的特定部分,链接 必须可见,否则我会被困在那个位置。这要求我的页面的某个部分应该是“可滚动的”。

在下面的 fiddle 中,我卡在了“Div3”:Fiddle

如何在显示“Div3”时使我的页面“可滚动”,否则不能滚动。

编辑:

我不能为我的“Div3”使用overflow-y: scroll;,因为它覆盖了我页面的全宽。添加它会改变我不想要的“Div3”的内容。

最佳答案

只需在其内容周围添加一个额外的容器即可使#div3 可滚动,如下所示:

<div id="div3">
    <div class="content">
        <h3>Div 3</h3>
        <a href="#div4">Next</a>
        <a href="#div2">Prev</a>
    </div>
</div>

然后修改您的 CSS 以强制该容器滚动:

#div3 {
    overflow-y: scroll;
}

updated fiddle显示了这在实践中是如何工作的。

编辑

如果您真正想要的是查看#div3 是否是当前视口(viewport)中的唯一一个并且整个视口(viewport)都被它占据,则 JS(使用 jQuery)将如下所示:

var $div3 = $('#div3'),
    div3Top = Math.round($div3.offset().top),
    div3Bottom = $div3.height() + div3Top,
    $window = $(window),
    $body = $('body');

$(window).on('scroll', function() {

    console.log($window.scrollTop());
    console.log(div3Top);    
    console.log(div3Bottom);

    if (($window.scrollTop() >= div3Top) && ($window.scrollTop() + $window.height()) < div3Bottom + 5) {
        $body.css('overflow', 'scroll');
    } else {
        $body.css('overflow', 'hidden');
    }
});

这并不完美,但应该足够好地展示了这个想法。

更新 fiddle here .

关于javascript - 使网页的特定部分可滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25953444/

相关文章:

javascript - 用户需要点击两次才能删除带有 javascript 切换可见性的 div block

javascript - 无法读取 WordPress 小部件中 null 的属性 'querySelector'

jquery悬停显示菜单问题

php - utf-8 字符输入对 PHP 正则表达式失败

php - 如何摆脱 json_encode() : Invalid UTF-8 sequence in php?

javascript - 过滤 asMap 计算值保持排序顺序?

javascript - 迭代对象数组的 json 对象,将一个键的值信任为 Angular 中的 HTML

javascript - jquery 数组相交

jquery - 如何触发 Jquery colorbox 关闭按钮并关闭覆盖事件

javascript - 试图让我的照片幻灯片不断循环播放所有照片