0

Android デバイスで次のデモを確認してください。

スクロールデモ

画面から少し外れている赤いボックスがあります。垂直スペーサーが存在しない場合、ページをどの方向にもドラッグできません。スペーサーが存在し、ウィンドウよりも多くの垂直方向のスペースを占有している場合、(予想どおり) ページを下にドラッグできますが、水平方向にもドラッグできるようになりました。

これは、Android ブラウザーでのみ発生するようです。ここで何が起こっているかについての手がかりはありますか?垂直スクロールを維持しながら、水平スクロールを完全に防止したいと思います。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" id="viewportMobile" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <link rel="stylesheet" type="text/css" href="test.css" />
    <style>
      html,body {
        overflow: hidden;
      }
      body {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        overflow-y: visible;
        overflow-x: hidden;
      }
      .offscreen {
        position: absolute;
        right: -20px;
        background-color: #ed0021;
        padding: 20px 20px 20px 20px;
      }
    </style>
    <script>
      var showSpacer=true;
      function toggleSpacer() {
        showSpacer = !showSpacer;
        var spacer = document.getElementById('spacer');
        spacer.style.display = showSpacer ? 'block' : 'none';
      }
    </script>

  </head>
  <body>
    <div class="toggle-button" onClick="toggleSpacer()">Toggle Spacer</div>
    <div class="offscreen"></div>
    <div id="spacer" style="width:50px; height:2000px; background-color:#444">
    </div>
  </body>
</html>

4

1 に答える 1

0

オーバーフロー プロパティを削除し、body 要素の位置を相対的に変更するとうまくいきました。次のようになります。

body {
    position: relative;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }

編集: 不適切なコピー/貼り付け

編集2:回答を更新

于 2014-10-22T12:55:13.233 に答える