javascript - 隐藏嵌套div的滚动条,但仍然可以滚动

标签 javascript html css scroll

<分区>

This是我使用的引用,它解释了如何使 div 滚动条隐藏。唯一的区别是我嵌套了 div。查看我的fiddle

HTML:

<div id="main">
    <div id="sub-main">
        <div id="content">
            <div id="item-container">
                <div class="item">a</div>
                <div class="item">b</div>
                <div class="item">c</div>
            </div>
        </div>
    </div>
</div>

CSS:

#main {
    width: 500px;
    height: 500px;
}

#sub-main {
    width: 500px;
    height: 500px;
    overflow: hidden;
}

#content {
    background-color: red;
    width: 500px;
    height: 500px;
    overflow: auto;
}

#item-container {
    width: 1500px;
    height: 500px;
}

.item {
    width: 500px;
    height: 500px;
    font-size: 25em;
    text-align: center;
    float: left;
}

像上面一样,我有一个溢出的水平 div,我想隐藏它的滚动条。我必须让它仍然可以滚动,因为 $.scrollTo() 否则将无法工作。

更新:

我已经阅读了所有答案,但我仍然没有解决我的问题,也不知道是什么原因造成的。这是有麻烦的生活。 基本上,我正在尝试关注 this几乎完全一样,但一定有某种原因导致我的网站无法按预期运行。有两个问题。

  1. 当我将 overflow: hidden 设置为可滚动元素的父容器时,我无法滚动( native javascript 滚动功能也不起作用)。
  2. 我只想滚动溢出的容器,而不是整个窗口。这可以通过在 $.localScroll({ target: '#projects-content' }) 中设置目标来完成,但是当我设置目标时没有滚动。如果我不这样做,只要不应用 overflow:hidden 滚动就可以工作。 同样,我们将不胜感激任何帮助。

HTML:

<div id="projects"> <!-- start of entire projects page -->
  <div id="project-sidebar">
    <a href="#project-first">
      <div class="sidebar-item sidebar-first">first</div>
    </a>
    <a href="#project-second">
      <div class="sidebar-item sidebar-second">second</div>
    </a>
    <a href="#">
      <div class="sidebar-item sidebar-third">third</div>
    </a>
  </div>

  <div id="project-content"> <!-- this must be the scrollable itmes' container, not the entire window -->
    <div id="project-first" class="project-item"> 
      <!-- these items should be scrollable -->
      <div class="project-subitem" id="first-sub1">
        <a href='#first-sub2' class='next'>next</a>
      </div>
      <div class='project-subitem' id='first-sub2'>
        <a href='#first-sub1' class='prev'>prev</a>
      </div>
      <!-- end of scrollable items -->
    </div>
  </div> <!-- end of scroll scroll container -->
</div> <!-- end of entire projects page -->

<script>
  // FIXME: when I set target, nothing scrolls.
  // But I don't want the entire window to scroll
  $('#projects').localScroll({
    //target: '#project-content',
    hash: false
  });
</script>

CSS

#project-content {
  width: 80%;
  height: 100%;
  position: relative;
  float: left;
}

#project-sidebar {
  float: left;
  width: 20%;
  height: 100%;
}

.project-item {
  width: 300%;
  height: 100%;
}

.project-subitem {
  height: 100%;
  width: 33.33%;
  position: relative;
  float: left;
}

更新:

在我将 overflow:scroll 添加到 #project-content 后,滚动按预期工作。我现在需要做的就是让滚动条在 #project-content 中消失。我尝试将 overflow:hidden 添加到它的父级但没有成功。我也尝试将它添加到 html, body,但随后整个文档拒绝接受任何滚动功能,如 scrollTop()

任何帮助将不胜感激!

最佳答案

理论:

技巧是使用比带滚动条的子元素短的父容器。这张图片显示了我的意思:

Hide scollbar

练习:

对于您的情况,我建议在 #project-content 上使用绝对定位和负底部值,这样它就会溢出底部的父容器 (#projects)。

现在的重点是什么负值?它应该与滚动条的 with 值相同,根据浏览器,滚动条的宽度永远不会相同。所以我建议给一个更大的值:-30px以确保它是隐藏的。您只需要小心,不要让靠近底部的内容可以隐藏在带有细滚动条的浏览器上。

这是您应该添加到网站的 CSS:

#projects{
    position: relative;
}

#project-content{
    position: absolute;
    top: 0;
    left: 20%;
    bottom: -30px;
    /* remove: 
        height: 100%; 
        position: relative; 
        float: left; 
        padding-bottom: -15px
    /*
}

关于javascript - 隐藏嵌套div的滚动条,但仍然可以滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23294091/

相关文章:

javascript - 请求具有相同数据属性的多个 id

css - 如何避免放大背景图像?

html - Overflow-x 滚动忽略右边距/填充

php - Magento - 更改新帐户电子邮件主题行的 css

JQuery 移动底部导航栏又名粘性页脚

javascript - 如何动态更改Ext js 4.0中网格的 "disableSelection"值?

javascript - 使用网格布局水平均匀定位框 - HTML

javascript - 在菜单上添加列

JavaScript 通过链接更改 div 颜色

javascript - Wordpress 主菜单中可点击的顶部菜单项