【问题标题】:Disable Horizontal Scrolling on Mobile Webpage禁用移动网页上的水平滚动
【发布时间】:2015-01-19 10:04:04
【问题描述】:

我正在尝试构建这个简单的移动网页,带有类似 Facebook 的侧面菜单按钮。我正在尝试使用 CSS overflow-x:hidden 禁用水平滚动,但它不起作用。这是我的代码,任何帮助将不胜感激:

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>



    <script> 
        $(document).ready(function(){                       
          $("button").click(function(){ 

              var win = $("#right-side");
              var position = win.position();
              //alert( "left: " + position.left + ", top: " + position.top ); 

              if(position.left < 100)
              {
                  $("#right-side").animate({left:'250px'});
              }else{
                  $("#right-side").animate({left:'0px'});
              }

          });
        });
    </script> 

    <style>
        body{overflow-x: hidden;font-family: sans-serif;}

        #right-side{
            background:#BFC7D8;;
            left:0;
            top:0;
            height:100%;
            width:100%;
            position:absolute;

        }
        #left-menu
        {
            background:#323949;
            left:0;
            top:0;
            height:100%;
            width:250px;
            position:absolute;
        }

        #navigation { font-size:20px; width:250px; padding-top:100px; }
        #navigation ul { margin:0px; padding:0px; }
        #navigation li { list-style: none; }



        ul.top-level li > a {
          display: block;
          border-bottom: 1px solid rgba(0,0,0, 0.1);
          border-top: 1px solid rgba(255, 255, 255, 0.1);
          padding: 15px;
          text-shadow: 0 1px 0 #000;
          text-decoration: none;
          color: #ccc;
          text-indent: 20px;
        }

        #toolbar
        {
            width:100%;
            height:50px;
            background:#00F;    
        }


    </style>





<div id="left-menu">
    <div id="navigation">
    <ul class="top-level">
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Contact</a></li>
        <li><a href="#">FAQ</a></li>
        <li><a href="#">News</a></li>
    </ul>
</div>  
</div>




<div id="right-side">

    <div id="toolbar">
        <button>Menu</button>
    </div>

    <h1>This is a test</h1>
</div>

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    我已将您的代码放入小提琴中,但我无法将“缩放”元标记添加到头部,因此很难在我的手机上进行测试。 http://jsfiddle.net/Pevara/Ku5nY/1/show/

    但在桌面上似乎可以正常工作,没有滚动条。

    我确实在您的 css 中添加了以下内容:

    body{
      overflow-x:hidden;
      font-family: sans-serif;   
      /* added: */
      max-width: 100%; 
      height: 100%;
    }
    

    不确定它是否会有所作为,但值得一试......

    【讨论】:

    • 嗨,彼得,感谢您的快速回复。我试过你的小提琴链接,我仍然可以向右滚动。问题是菜单何时打开。我在 Mac 上,所以滚动条不会显示在底部,但如果我尝试用触摸板向右滚动,它会移动。
    • 我认为问题在于您将右侧移动到右侧,而不是将左侧移动到右侧而是在顶部
    【解决方案2】:

    大卫。

    你试过用这个吗:http://mmenu.frebsite.nl/

    或者,看看这个,看看你是否可以用它来调整你的代码:

    http://jsfiddle.net/tzDjA/

    您会注意到有 3 个功能:

    $('#trigger').click( function() {
        if ($('#popout').hasClass('hidden')) {
            $('#popout').removeClass('hidden');
            showPopout();
        }
        else {
            $('#popout').addClass('hidden');
            hidePopout();
        }
    });
    
    function showPopout() {
        $('#popout').animate({
            left: 0
        }, 'slow', function () {
            $('#trigger span').html('Close');  //change the trigger text at end of animation
        });
    }
    
    function hidePopout() {
        $('#popout').animate({
            left: -40
        }, 'slow', function () {
            $('#trigger span').html('Show');  //change the trigger text at end of animation
        });
    }
    

    【讨论】:

      【解决方案3】:

      我有一个类似的问题,我的内容后面有菜单,我将我的内容向左推以显示隐藏在后面的 facebook 样式菜单。

      我正在应用“绝对”定位来模拟幻灯片并将内容从文档流中取出。隐藏溢出后,您似乎可以通过触摸将内容层拉过来(这听起来与您遇到的问题相同)。即使溢出标准,x & y 设置几乎所有这仍然发生。这也是 width:100% on body 等。

      当我滑动它时将内容层更改为“相对”,然后将内容的高度(在菜单打开时)降低到窗口高度似乎对我有用,并且在设备上似乎相当强大。

      祝你好运,这应该对遇到类似问题的人有所帮助。

      谢谢, 戴夫

      【讨论】:

        【解决方案4】:

        这是一个快速的。问题是它仅在您定义模态的高度时才有效。如果没有定义高度,它将无法工作。将对话框设置为高度 100% 并隐藏溢出。然后将内容设置为 position: absolute, top: 0, bottom: 0, left: 0, right: 0, margin: auto 并定义高度(在下面的示例中,登录模式为 250px)。我知道这听起来很不合理——它可能是一个 CSS 故障,但是:它可以工作——跨浏览器和跨平台(没有检查过 iPhone)。

        <div class="modal-dialog" style="height:100%;overflow:hidden"><div class="modal-content" style="position:absolute;margin:auto;top:0;bottom:0;left:0;right:0;height:250px;">
        

        【讨论】:

          猜你喜欢
          • 2011-05-10
          • 1970-01-01
          • 1970-01-01
          • 2013-03-30
          • 1970-01-01
          • 2011-11-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多