如何创建水平隐藏滚动条

时间:2016-09-18 06:30:51

标签: javascript jquery html css

我实际上是在尝试复制您通常在移动应用中看到的水平滚动菜单。

我真的不明白为什么它不应该工作,但对我来说隐藏垂直滚动条并用水平滚动似乎是合乎逻辑的。我知道隐藏垂直滚动条有很多解决方案,但为什么水平滚动条不可能这样做呢?

这是我到目前为止创建的片段,它演示了垂直方式,但我怎么能修改水平方式呢?

我确实尝试过:
    溢出-γ:隐藏;     溢出 - X:滚动;

但这不起作用......

我可以将它弯曲到jquery,但我不确定如何去做,所以如果有一个兼容的css解决方案,那将有助于我。



.block,
.container {
  width: 250px;
  height: 250px;
}
.container {
  border: 1px solid #aaa;
  padding: 5px 0 5px 5px;
  position: relative;
  overflow: hidden;
}
.container-inner {
  position: absolute;
  overflow-x: hidden;
  overflow-y: scroll;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  .container-inner,
  .block {
    transform: scale(-1, 1);
    -webkit-transform: scale(-1, 1);
  }
  .container-inner {
    right: 0;
  }
}
.block {
  padding: 10px 0px 10px 0;
}

<div class="container">
  <div class="container-inner">
    <div class="block">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vehicula quam nibh, eu tristique tellus dignissim quis. Integer condimentum ultrices elit ut mattis. Praesent rhoncus tortor metus, nec pellentesque enim mattis nec.
      <br/>
      <br/>Nulla vitae turpis ut dui consectetur pellentesque quis vel est. Curabitur rutrum, mauris ut mollis lobortis, sem est congue lectus, ut sodales nunc leo a libero. Cras quis sapien in mi fringilla tempus condimentum quis velit. Aliquam id aliquam
      arcu. Morbi tristique aliquam rutrum.
      <br/>
      <br/>Duis tincidunt, orci suscipit cursus molestie, purus nisi pharetra dui, tempor dignissim felis turpis in mi. Vivamus ullamcorper arcu sit amet mauris egestas egestas. Vestibulum turpis neque, condimentum a tincidunt quis, molestie vel justo.
      <br/>
      <br/>Sed molestie nunc dapibus arcu feugiat, ut sollicitudin metus sagittis. Aliquam a volutpat sem. Quisque id magna ultrices, lobortis dui eget, pretium libero. Curabitur aliquam in ante eu ultricies. Quisque vitae tincidunt purus. Vivamus feugiat
      bibendum erat, nec interdum urna porta sed.
      <br/>
      <br/>Nunc lobortis neque orci, ut suscipit nisl congue feugiat. Vivamus feugiat tellus quis cursus sollicitudin. Curabitur dolor massa, dictum ut ipsum in, porttitor pellentesque ante. Aenean egestas cursus tempor. Maecenas semper tortor sit amet egestas
      cursus. Mauris porttitor quis nisi ut tincidunt. Curabitur adipiscing eleifend nibh. Praesent mauris leo, consequat vitae orci eget, vestibulum bibendum nisi. Aliquam tempus diam ut tortor cursus, eget sodales augue adipiscing. Nulla at dignissim
      libero.
    </div>
  </div>
</div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

要避免使用垂直滚动条,只需确保内容的高度不超过容器的高度。这可以通过确保滚动容器和子容器之间的元素使用最大高度(100%)而不是某些硬编码值来完成。

容器上的

overflow: auto只会向超出容器维度的子维度添加滚动条。

编辑:隐藏水平滚动条是特定于平台的,因为它们在不同平台上具有不同的高度。在Mac上,它是13px,因此滚动区域的容器需要小13px才能隐藏滚动条。

没有垂直滚动条的水平滚动菜单的示例代码:

http://codepen.io/tlee/pen/WGxBYA

&#13;
&#13;
html {
  font-size: 10px;
}
container {
  display: block;
  overflow: hidden;
  /* Height of scrollbar on Mac is 13px */
  height: calc(5rem - 13px);
}
scroll-area {
  display: block;
  /* Viewable width of component. */
  width: 400px;
  height: 5rem;
  overflow: auto;
  border: 1px solid lightgray;
}

button-menu {
  display: flex;
  margin: 0;
  padding: 0;
  width: 800px;
  height: 100%;
}

button {
  box-sizing: border-box;
  flex: 1 0 auto;
  font-size: 2rem;
  height: 100%;
  margin: 0;
  padding: 0;
}
&#13;
<container>
  <scroll-area>
    <button-menu>
      <button>Apple</button>
      <button>Berkshire</button>
      <button>Chevron</button>
      <button>Deutsche Bank</button>
      <button>Exxon</button>
    </button-menu>
  </scroll-area>
</container>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

如果你使用overflow: hidden滚动条消失但你根本无法滚动,所以,如果你想要带有隐藏滚动条的可滚动div,你需要脚本或让它的父隐藏< / em>滚动条。

以下是使用非脚本

的方法

.container {
  width: 250px;
  height: 220px;           /* 30px less high than inner to "hide" scroll */
  border: 1px solid #aaa;
  overflow: hidden;
}
.block,
.containerinner {
  width: 250px;
  height: 250px;
}
.containerinner {
  padding: 5px 0 5px 5px;
  position: relative;
  overflow: auto;
  overflow-y: hidden;
}
.block {
  padding: 10px 0px 10px 0;
  white-space: nowrap
}
<div class="container">
<div class="containerinner">
    <div class="block">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vehicula quam nibh, eu tristique tellus dignissim quis. Integer condimentum ultrices elit ut mattis. Praesent rhoncus tortor metus, nec pellentesque enim mattis nec.
      <br/>
      <br/>Nulla vitae turpis ut dui consectetur pellentesque quis vel est. Curabitur rutrum, mauris ut mollis lobortis, sem est congue lectus, ut sodales nunc leo a libero. Cras quis sapien in mi fringilla tempus condimentum quis velit. Aliquam id aliquam
      arcu. Morbi tristique aliquam rutrum.
      <br/>
      <br/>Duis tincidunt, orci suscipit cursus molestie, purus nisi pharetra dui, tempor dignissim felis turpis in mi. Vivamus ullamcorper arcu sit amet mauris egestas egestas. Vestibulum turpis neque, condimentum a tincidunt quis, molestie vel justo.
      <br/>
      <br/>Sed molestie nunc dapibus arcu feugiat, ut sollicitudin metus sagittis. Aliquam a volutpat sem. Quisque id magna ultrices, lobortis dui eget, pretium libero. Curabitur aliquam in ante eu ultricies. Quisque vitae tincidunt purus. Vivamus feugiat
      bibendum erat, nec interdum urna porta sed.
      <br/>
      <br/>Nunc lobortis neque orci, ut suscipit nisl congue feugiat. Vivamus feugiat tellus quis cursus sollicitudin. Curabitur dolor massa, dictum ut ipsum in, porttitor pellentesque ante. Aenean egestas cursus tempor. Maecenas semper tortor sit amet egestas
      cursus. Mauris porttitor quis nisi ut tincidunt. Curabitur adipiscing eleifend nibh. Praesent mauris leo, consequat vitae orci eget, vestibulum bibendum nisi. Aliquam tempus diam ut tortor cursus, eget sodales augue adipiscing. Nulla at dignissim
      libero.
    </div>
</div>
</div>

以下是显示一些脚本示例的2个链接