固定div内的'overflow-x:scroll'可防止ios上的垂直滚动

时间:2017-01-16 16:52:38

标签: html ios css

似乎如果你有一个带水平滚动的div,在一个固定的div内,它会阻止IOS上的垂直滚动。 I.E - 如果我通过将手指放在水平滚动div上开始滚动,并尝试垂直滚动,则没有任何反应。

似乎对我的同事Andriod设备没问题。

我创建了一个测试用例,在此处演示了这个问题:

http://jsbin.com/jikatugeli/

这是html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  some content underneath
  <div class="pop-up">
    <p>I'm some other content</p>
    <div class="scrollable">
      <div class="item">hi</div>
      <div class="item">hi</div>
      <div class="item">hi</div>
      <div class="item">hi</div>
      <div class="item">hi</div>
      <div class="item">hi</div>
      <div class="item">hi</div>
      <div class="item">hi</div>
      <div class="item">hi</div>
      <div class="item">hi</div>
      <div class="item">hi</div>
    </div>
    <div class="somemoretext">
      hello there, I am some text to make things scrollable
    </div>
  </div>
</body>
</html>

这是css

p {
  font-size:22px;
}

.item {
  display:inline-block;
  width:80px;
    height:60px;
  font-size:78px;
}

.scrollable {
  width:350px;
  white-space: nowrap;
  overflow-x:scroll;
  overflow-y:hidden;
}

.pop-up {
  position:fixed;
  height:300px;
  background:red;
  border: 1px solid #000;
  width:100%;
  top:0;
  overflow-y:scroll;
  z-index:9999;
}

.somemoretext {
  padding-top:600px;
}

感谢您的帮助。

2 个答案:

答案 0 :(得分:7)

以下css修复了您的问题

html,body{height:100%}
body{background:red}
p {
  font-size:22px;
}

.item {
  display:inline-block;
  width:80px;
    height:60px;
  font-size:78px;
}

.scrollable {
  width:350px;
  white-space: nowrap;
  overflow-x:scroll;
  overflow-y:hidde;
  position: relative;
  -webkit-transform: translateZ(0);
}

.pop-up {
  position:fixed;
  height:300px;
  background:blue;
  border: 1px solid #000;
  width:100%;
  top:0;
  overflow-y:scroll;
  z-index:9999;
  -webkit-overflow-scrolling: touch;
}

.somemoretext {
  padding-top:600px;
}

包含-webkit-的行是在Safari中进行滚动工作的关键 在.pop-up DIV中你需要overflow-y:scroll和-webkit-overflow-scrolling:touch来强制滚动。在.scrollableyou需要-webkit-transform:tranzlateZ(0);要上下移动实际的html内容,其他方面DIV会滚动但溢出的内容不会显示。

答案 1 :(得分:0)

只需在身体样式中添加-webkit-overflow-scrolling: touch;就可以解决此问题。