【问题标题】:Overflow-x: hidden; not working on android devices溢出-x:隐藏;不适用于安卓设备
【发布时间】:2014-02-28 19:38:17
【问题描述】:

我得出的结论是,这是一个只有 android 的问题,是由我的导航菜单的工作方式引起的,并且我已经没有想法可以尝试了。菜单从左侧推到 100% 以隐藏菜单。然后我使用 css 过渡让菜单从右侧滑出到窗口的 80%。切换菜单后,它会在隐藏菜单的右侧留下一个空旷的空间。我不能使用 display: none;因为它会杀死动画。重要问题仅在切换菜单后才会发生。

我试过了:

2014 年 2 月 6 日更新

这里是导航菜单css:

ul.subNav {
    position: absolute;
    top: 70px;
    left: 100%;
    transition: all 0.6s ease;
    -webkit-transition: all 0.6s ease;
    -moz-transition: all 0.6s ease;
    -ms-transition: all 0.6s ease;
    visibility: hidden;
    width: 80%;
    background: #f7f7f7;
    border-left: 5px solid #00529f;
    z-index: 100;
}

结束更新

这是css:

.wrapper {
    max-width: 100%;
    height: 100%;
    background: #20aad7;
    background: url("../images/bg.png"), -moz-linear-gradient(-45deg, #20aad7 0%, #54709f 31%, #64b491 65%, #047074 100%);
    background: url("../images/bg.png"), -webkit-gradient(linear, left top, right bottom, color-stop(0%,#20aad7), color-stop(31%,#54709f), color-stop(65%,#64b491), color-stop(100%,#047074));
    background: url("../images/bg.png"), -webkit-linear-gradient(-45deg, #20aad7 0%,#54709f 31%,#64b491 65%,#047074 100%);
    background: url("../images/bg.png"), -o-linear-gradient(-45deg, #20aad7 0%,#54709f 31%,#64b491 65%,#047074 100%);
    background: url("../images/bg.png"), -ms-linear-gradient(-45deg, #20aad7 0%,#54709f 31%,#64b491 65%,#047074 100%);
    background: url("../images/bg.png"), linear-gradient(135deg, #20aad7 0%,#54709f 31%,#64b491 65%,#047074 100%);
    background-repeat: repeat;
    overflow-x: hidden;
}

最后,这是一个小提琴/直播网站:Demo-fiddle/Demo-live-site


这是问题的样子:

【问题讨论】:

  • 我在 iOS7 上玩过你的页面宽度。我没有立即看到溢出问题。我该怎么做才能重现问题?
  • 切换导航或搜索按钮后就会出现问题。我只在我的 driod 上进行了测试,但是一旦我在家,我就可以在我的旧 iPhone 上进行测试。
  • 到目前为止在 ios 下对我来说还不错。我无法为 android atm 提供帮助。我会赞成你的问题。
  • @NicoO 我添加了一张图片来展示它的外观。我检查了 chrome、firefox 和 samsung 浏览器,它们都显示相同,这可能是 android 唯一的问题。
  • 点击、固定、拖动和使用每个幻灯片切换选项。与 ios 配合使用。你真的应该专注于 android 浏览器进行研究

标签: android html css overflow


【解决方案1】:

在处理 ionic 项目时,我在 Android 上遇到了同样的问题。我为解决这个问题所做的就是将{overflow-x:hidden} 放在子元素上。

【讨论】:

    【解决方案2】:

    遇到了同样的问题,将 overflow-x: hidden 应用到 html 和 body 在 Android 中没有做任何事情。将一个容器 div 放在你的 body 中,并让它包裹页面上的所有内容。向该容器 div 添加一个溢出-x:隐藏,问题就解决了。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,我在这里合并了一些答案,所以感谢大家的意见!这是我所做的:

      body{ 
          overflow-x:hidden; 
      }
      .menu{
          position: fixed;
          z-index: 1;
          width: 340px;
          max-width: 85%;
          top: 0px;
          right: -340px;
      }
      .menu.open{ 
          right:0; 
          position:absolute; 
      }
      

      设置position:fixed; 似乎可以解决问题,所以当我想要打开菜单时(在我的情况下,fixed 的位置并不理想)我将其设置为absolute。如前所述,您还可以切换visibility 甚至设置display:none。这仅在 Chrome for android 上进行了测试。

      【讨论】:

        【解决方案4】:

        在过去的几天里,我们一直在与我的朋友(事实证明,@user3310612 :))在工作中遇到同样的问题。绝对无法理解为什么向右移动菜单的每一种方式(尤其是变换,它不应该影响布局)都使页面在 Android 上可滚动。

        今天在看到overflow-x 无法在 Android 上运行的帖子后,我只是随机问“如果你只使用 overflow:hidden 会发生什么。期望 - 右菜单被剪掉,但也可能页面残缺和破碎/向下滚动。现实——完美运行

        所以,对我们来说,最上面的#container 上的overflow:hidden 解决了这个问题。 20 分钟前 :)

        【讨论】:

        • 你在那个容器上使用height: 100%;吗?
        • 否,如果页面不够长(这不会影响移动设备),可能是因为桌面上的演示菜单太短(比窗口短)。我正在考虑在某处添加类似min-height: 100%min-height: 100vh 的技巧。
        • 我可以试一试,但由于我的工作很匆忙,所以我最终重做了设置。我也很确定当我尝试overflow: hidden; 时它破坏了布局,但至少我有旧文件要测试!
        • 哦,值得一提 - 我们有#container#inner-container 的双重包装,我认为这是因为 offCanvas-menu 支持。您可以在bitbucket.org/ikari_pl/menuheader 查看我们的版本
        • 附言。不幸的是,现场示例没有向我显示任何正确的菜单,也没有重现问题。在智能手机上打开 JSFiddle 也不会出现这个问题,但可能是因为预览面板是 iFrame...
        【解决方案5】:

        尝试替换

        overflow-x: hidden;
        

        overflow: hidden;

        我遇到了同样的问题,它对我有用。

        【讨论】:

        • overflow: hidden; 确实适用于大多数情况,但不是我的页面,因为我将高度设置为 100%,它会在我不能拥有的之后限制它。
        【解决方案6】:

        我猜你的“问题”来自visibility: hidden/ visible

        正如the spec 所说:“隐藏 - 生成的框是不可见的(完全透明,没有绘制任何内容),但仍然影响布局。”

        尝试使用

        display: none|block;
        

        改为。

        或者,如果您将菜单推到屏幕外的左侧(而不是右侧),则可以避免整个事情。

        顺便说一句:指向您的实时站点的链接不起作用,并且您在 JSFiddle 上的 HTML 标记中存在一些错误(例如,结束 </span> 标记)并且您的 CSS 有优化空间。 ;-)

        【讨论】:

        • 更新了实时链接,从 html 变为 asp,现在受密码保护。关于你的建议,我知道可见性是造成它的原因,但正如我在问题中所说,我不能使用display: none|block;,因为它会杀死动画。当您使用 css 为某些内容设置动画时,您需要远离 none|block 否则将没有动画。与 span 标签有关,很好!我什至没有注意到,所以非常感谢你。 :]
        • @JoshPowell:好的,那你为什么不对菜单的宽度(从 0 到 80%)而不是位置设置动画呢?这样你就不需要把它从屏幕上推开。或者如前所述,将其推到左侧,顺便说一句,这更像是原生应用程序的行为。
        • 动画宽度是一个相当不错的主意。对于从左侧制​​作动画,我不知道这是否是最好的主意,因为右侧的按钮对用户来说最容易。这是一个关于此的问题,ux.stackexchange.com/questions/45110/…。我可以从左侧对其进行动画处理,但这可能看起来有点奇怪,感谢您的想法!
        • 关于链接的 SO 问题:我会按照 Majed 的回答。我认识的大多数人,没有人只用一只手。所有人一只手拿着设备,另一只手操作。所以我的建议是:把你的图片放在中间,右边是搜索按钮,左边是菜单链接。祝你好运!
        • 感谢大家的帮助以及您的建议,我已经实施了!这是网站链接bestbenefitsclub.com/BBCM/login.asp,以及临时密码feb2014。如果您不介意,请告诉我您的想法!再次感谢您所做的一切。
        【解决方案7】:

        我找到了一个目前可以使用的选项。 (将留下未标记以获得更好的答案)

        我最终制作了菜单和导航图标position: fixed;,因为我希望在用户滚动页面时将菜单固定在同一位置,以防止菜单看起来很尴尬。

        这只是由于position: fixed; 而解决了我的问题,因为它将整个元素从工作流程中取出,就好像它不存在一样。然后身体不会感知到元素在那里,所以你不能再滚动到右侧。

        ul.subNav {
            position: fixed;
            top: 0;
            left: 100%;
            transition: all 0.6s ease;
            -webkit-transition: all 0.6s ease;
            -moz-transition: all 0.6s ease;
            -ms-transition: all 0.6s ease;
            visibility: hidden;
            width: 80%;
            height: 100%;
            background: #f7f7f7;
            border-left: 5px solid #00529f;
            z-index: 100;
        }
        
        ul.subNav.active {
            left: 20%;
            visibility: visible;
        }
        

        【讨论】:

        • +1 我试图添加一个滑出菜单并且设置位置固定是防止侧滚动到菜单的唯一方法。谢谢!
        【解决方案8】:

        你需要

        #wrapper {position:absolute;}
        

        【讨论】:

        • 这似乎适用于搜索栏,但不适用于导航菜单。一旦导航被切换,页面的右侧就会变成可滚动的。我还使用了相对而不是绝对,两种都试过了,因为包装器不能绝对定位。
        猜你喜欢
        • 2017-02-23
        • 2014-10-11
        • 2018-10-04
        • 2013-12-16
        • 1970-01-01
        • 2020-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多