我得出结论,这是一个仅限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
以下是问题所在的图像:
答案 0 :(得分:3)
我的朋友(事实证明,@ user3310612 :))在过去几天的工作中一直在努力解决同样的问题。绝对无法理解为什么每个移动菜单的方式(尤其是转换,不应该影响布局)使得页面可以在Android上滚动。
今天看到overflow-x
在Android上无效的帖子后,我随机问“如果你只使用overflow:hidden
会发生什么。期望 - 右侧菜单被剪切,但可能还有cripled page和向上/向下滚动。现实 - 完美无瑕地工作。
因此,对我们来说,最顶层overflow:hidden
上的#container
解决了这个问题。 20分钟前:))
答案 1 :(得分:3)
遇到同样的问题,将一个overflow-x:hidden应用于html和body在Android中没有做任何事情。将一个容器div放在你的身体内,然后将它包裹在页面上。将overflow-x:hidden添加到该容器div中,问题就解决了。
答案 2 :(得分:2)
我找到了一个现在适用的选项。 (将留下无标记以获得更好的答案)
我最终制作了菜单和导航图标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;
}
答案 3 :(得分:1)
你需要
#wrapper {position:absolute;}
答案 4 :(得分:0)
我猜您的“问题”来自visibility: hidden/ visible
。
正如the spec所说:“隐藏 - 生成的框是不可见的(完全透明,没有绘制任何内容),但仍会影响布局。”
尝试使用
display: none|block;
代替。
或者,如果您将菜单从屏幕上移到左侧(而不是右侧),则可以避免整个过程。
BTW:您的实时网站链接无效,JSFiddle上的HTML标记存在一些错误(例如结束</span>
标记),您的CSS也有优化空间。 ; - )
答案 5 :(得分:0)
尝试替换
overflow-x: hidden;
overflow: hidden;
我遇到了同样的问题而且对我有用。
答案 6 :(得分:0)
我遇到了同样的问题,我将这里的一些答案合并在一起,感谢大家的投入!这就是我的所作所为:
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上进行了测试。
答案 7 :(得分:0)
在处理离子项目时,我在Android上遇到了同样的问题。我为解决问题所做的是将{overflow-x:hidden}
放在子元素上。