所以这是我的问题:
- 使用弹出菜单切换器添加 60px 高度的标题栏
- 在页面上添加足够的内容以滚动当切换弹出菜单时 - 添加 overflow-y: hidden 到 html 和/或 body 和 position: 固定到弹出窗口。
- 想法是,当我打开菜单弹出窗口时 - 我必须只有弹出窗口作为可滚动区域,并且在弹出窗口打开时无法滚动背景
结果:
- 在 iOS (iphone/ipad) 上,背景滚动,尤其是当弹出窗口到达滚动结束时。
- 如果我在标题栏上触摸移动,也在 iOS (iphone/ipad) 上 - 页面仅在背景上滚动
- 滚动后弹出窗口并不总是到达视口的末尾(主要是在 iOS 上)。此问题也部分存在于 Android 设备上。
- 动量效应使头球移动(不应该)。
这是带有代码的片段。
$('.dropdown-toggle').click(function(){
$('body').toggleClass('menu-dropdown-expanded');
})
body, ul {
margin: 0;
padding: 0;
}
.navbar {
height: 60px;
background: wheat;
}
.dropdown-window {
position: fixed;
top: 60px;
left: 0;
width: 100%;
height: calc(100% - 60px);
background-color: #e7e7e7;
display: none;
-webkit-overflow-scrolling: auto;
overflow-y: scroll;
}
.menu-dropdown-expanded {
overflow-y: hidden;
}
.menu-dropdown-expanded .dropdown-window {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="navbar">
<ul class="main-menu">
<li>
<a href="#" class="dropdown-toggle">Dropdown toggle</a>
<div class="dropdown-window">
<ul>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
<li><a href="#">Some item</a></li>
</ul>
</div>
</li>
</ul>
</div>
<div class="my-content">
<p>Lorem ipsum dolor sit amet, vis viris inermis voluptatibus ad, ex ius elitr feugiat. Partem ignota temporibus ea vel, ius mentitum imperdiet in. Ius an clita ancillae placerat, sed graeci adolescens no. Utinam adolescens ullamcorper ea vix. Mel ipsum constituam te. Eu usu hendrerit eloquentiam, te case habeo porro vix.</p>
<p>Mea eu homero munere molestie. Sea facilisi signiferumque ea, mea an labore laboramus liberavisse. Sit ea nemore verear, nec posse populo virtute an. Ne pro nobis impetus. Nec cu vidit rebum augue. Aeque accommodare ne has. Ut vel graece persius bonorum, nam te inimicus persecuti, no pri dicta facilisis philosophia.</p>
<p>Errem accusata recusabo nec ne, at sed causae vivendo, possim detracto expetendis est id. Sit te mutat mazim dolorem, mel ei euripidis neglegentur. Usu eirmod integre minimum et, est mutat docendi delicata in. Qui nihil possit ei, cu nostrud eleifend liberavisse vim.</p>
<p>Ignota apeirian gloriatur at vel. Facete aliquid vulputate te duo, ea viderer placerat nec, est eu alienum posidonium dissentiet. Vis eu brute vocibus ponderum, animal omittantur usu cu. Wisi quas te per. Nec no vidit homero, saperet euripidis duo ut, at meis legendos maluisset per.</p>
<p>Simul iisque elaboraret ut pro. Minim euismod mei ei. Mei dolorem perpetua no. Quo viris admodum at. Ea vim harum apeirian delicata, ut sed interesset necessitatibus, copiosae petentium cu sit.</p>
<p>Nibh corpora invenire ne mea. Mei copiosae constituam te, te ius aeterno legendos pertinax, cu sed fugit hendrerit. Te quodsi comprehensam has, ea vel latine singulis consetetur. Est tation ancillae an, id vim quas vocibus. An mei amet quaeque evertitur, ridens apeirian ad eos. Ut nec minimum pertinax, eu vim veri lorem oportere.</p>
<p>Facer aliquam eos an, pri ex ipsum forensibus. No iusto dicit nam, ridens maluisset usu et. Sed detracto salutandi in, vis ex falli aliquip rationibus. Cu vim eirmod dolorem eligendi. His ea purto graece, feugiat forensibus vituperata ne est. Deleniti vulputate nam id, in labore euripidis omittantur nec.</p>
<p>Duo an regione phaedrum, mazim homero assueverit mel et. Illud adipisci cu his, et error invenire est. Invidunt efficiantur vis no, in vix mollis vocent, vitae debitis in his. Ne aperiri detracto molestie eam, illum euismod nonumes eos ei. Ea unum volutpat mediocritatem mei, eu nam novum oporteat eloquentiam. Quo ad iusto oporteat ocurreret.</p>
<p>Unum labores instructior quo ex, ius te diam viris reprehendunt. Eum debitis vocibus deterruisset eu. Ubique splendide repudiandae ex mea. Ex quo quem omnesque torquatos. Vim ea legere salutatus, at qui dolor sanctus habemus.</p>
<p>Tibique assueverit conclusionemque ut nec, quo illud gubergren ad. Mea commodo invenire ea, ius id oblique virtute constituto, his justo erant vidisse ut. Enim persius quo no, et pro ubique nonumes facilis. Ex vim malis deterruisset, eu diceret honestatis per, mea duis prompta molestiae no. Vim modus lobortis vulputate et, sit posse sententiae honestatis ea, duo cu detraxit reformidans. Et pro summo harum tritani, scripta accusam id mel, nam dicat iudico ex. Choro concludaturque id sed, has suas noster ne, ne aeque quidam mel.</p>
</div>
请注意,通过在 codepen 上运行代码是看不到问题的。
我确信这可能会被标记为重复,但经过一周的研究,我仍然没有找到任何解决方案。我不擅长使用原生 js,所以我更喜欢使用 jQuery。
更新:
截至Hieren feb 的回答,我所有的问题都是由 iOS 的 Momentum 滚动的存在引起的。放置位置:激活弹出窗口时固定到主体修复了问题。