iOS上的动量滚动(-webkit-overflow-scrolling)将其他所有内容都包含在其中

时间:2014-11-17 15:35:31

标签: ios css safari mobile-safari css-position

我使用this article中的技术将动量/ intertia滚动添加到元素。

HTML:

<h1>My title</h1>
<div class="container">
  <div class="cause">
    <div class="cause-content">
      <h2>things</h2>
    </div>
  </div>
  <div class="cause">
    <div class="cause-content">
      <h2>things</h2>
    </div>
  </div>
    <div class="cause">
    <div class="cause-content">
      <h2>things</h2>
    </div>
  </div>
  <div class="cause">
    <div class="cause-content">
      <h2>things</h2>
    </div>
  </div>  
  <div class="cause">
    <div class="cause-content">
      <h2>things</h2>
    </div>
  </div>  
  <div class="cause">
    <div class="cause-content">
      <h2>things</h2>
    </div>
  </div>  
  <div class="cause">
    <div class="cause-content">
      <h2>things</h2>
    </div>
  </div>  
  <div class="cause">
    <div class="cause-content">
      <h2>things</h2>
    </div>
  </div>  
</div>

CSS:

body{
  overflow: hidden;
}

.container{
  margin-top: 5em;
  overflow-x: scroll;
  white-space: nowrap;
  width: 100%;
  height: 100%;
  -webkit-overflow-scrolling: touch;
}

.cause{
  /* prettify */
  background: blue;
  color: white;
  text-align:center;

  /* real shit */
  display: inline-block;
  width: 260px
}

这样可行,但问题是需要使用其他元素!我的标题随之滚动。即使我添加position: fixed,也会发生这种情况(可能是因为在iOS Safari上完全支持修复版。

是否有人知道如何让惯性滚动工作,同时仍然在正确的地方聆听其他元素?

1 个答案:

答案 0 :(得分:3)

我使用代码in this pen解决了这个问题。重要的一点似乎是whitespace: no-wrap位。

HTML:

<div class="wrapper">
  <a href="" class="internal">item 1</a>
  <a href="" class="internal">item 2</a>
  <a href="" class="internal">item 3</a>
  <a href="" class="internal">item 4</a>
  <a href="" class="internal">item 5</a>
  <a href="" class="internal">item 6</a>
</div>

CSS:

body {
  background-color: #333;
}
.wrapper {
  width: 320px;
  white-space: nowrap;
  overflow-y: hidden;
  overflow-x: scroll;
  -webkit-overflow-scrolling: touch;
  padding: 1rem;
  background-color: #ccc;
}

.internal {
  display: inline;
  background-color: wheat;
  &:nth-child(odd) {
    background-color: hotpink;
  }
}