在 iPhone 网站上禁用水平滚动

问题描述 投票:0回答:6

我正在开发一个由 Wordpress 驱动的网站的 iPhone 版本,我想知道当该网站在 iPhone 版 Safari 中打开时是否有任何方法可以禁用水平滚动。现在,我已经完成了一半的开发,只是为了检查是否可以禁用水平滚动,我隐藏了任何超出屏幕宽度的元素,但我仍然可以水平滚动到右侧。我尝试将以下代码放入

<style>
中的
<head>
标签中,但这没有帮助:

body { 溢出-x:隐藏; }

我已将以下

<meta>
代码放入头文件中,以在用户从 iPhone 查看网站时进行回显,但它只会禁用用户捏合,即您无法通过捏合屏幕来放大和缩小。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

我目前使用 iPhone 4 查看该网站,可以通过以下链接访问该网站:http://ignoremusic.com。期待大家的解决方案,谢谢。

解决方案: 正如@Riskbreaker所建议的,有一些元素超出了〜312px的宽度,这就是为什么我仍然可以 向左滑动并调整所有此类元素的宽度后, 我禁用了水平滑动。我学到的一件事是隐藏 对于 iPhone/iPad,overflow-x 没有帮助,你必须 将所有元素的宽度减小到您的宽度 否则您仍然可以水平滑动。

iphone ios css mobile-safari horizontal-scrolling
6个回答
28
投票

我知道我参加聚会有点晚了,但我也遇到了同样的问题,并通过添加解决了它:

body, html{
    overflow-x: hidden;
}

希望这对其他人有帮助!


15
投票

像这样在你的身体上添加溢出:

body    {
        font: 12px/20px "Helvetica neue", Helvetica, Arial, sans-serif;
        font-weight: normal;
        overflow: hidden;
        overflow-y: auto;
        }

是的,坚持下去:

<meta name="viewport" content="width=device-width">

4
投票

对于位于视口区域之外的移动菜单,我也遇到了同样的问题。溢出-x:隐藏在Android手机中已解决,但在iPhone中未解决。我通过将菜单的“绝对”位置更改为“固定”位置来解决:

body { overflow-x: hidden; }    
nav { position: absolute; width: 300px; right: -300px; }

至:

body { overflow-x: hidden; }    
nav { position: fixed; width: 300px; right: -300px; }

希望有帮助。


1
投票

对我来说,这也解决了问题:

html {
    overflow-x: hidden;
    max-width: 100vw;
}

通过最大宽度,屏幕似乎是固定的。


1
投票

我最近遇到了同样的问题,但其他答案都不适合我。在最新版本的 Safari(至少是桌面版)中,您还必须将位置设置为相对位置。

body, html {
  position: relative;
  overflow: hidden;
}

0
投票

实现此目的的另一种方法是使用

touch-action

body {
    touch-action: pan-y; /** Disable horizontal scrolling */
}
© www.soinside.com 2019 - 2024. All rights reserved.