У меня есть эта страница:
<html>
<body>
<div class="app">
<div class="main-panel">
<nav class="navbar"></nav>
<div class="sidenav">
<ul>
<li>First</li>
<li>2nd</li>
<li>3rd</li>
<li>4th</li>
</ul>
</div>
<div class="page-container">
<div class="placeholder">
<ul>
<li>First</li>
<li>2nd</li>
<li>3rd</li>
<li>4th</li>
</ul>
</div>
<input type="text">
</div>
</div>
</div>
</body>
</html>
и следующий css:
html, body {
height: 100%;
width: 100%;
position: fixed;
overflow: visible; }
.app {
background-color: #f4f5f8;
height: 100%;
overflow-x: hidden;
overflow-y: auto; }
.main-panel {
height: 100%;
display: grid;
grid-template-columns: 210px 1fr;
grid-template-rows: 76px 1fr; }
.navbar {
grid-column: 1 / 3; }
.page-container {
overflow-y: auto;
overflow-x: hidden; }
.placeholder {
display: block;
height: 500px;
width: 100%; }
Также доступно по адресу: https://jsfiddle.net/1vk5jcuL/
В Safari 12.1 (MacOS и iOS), если вы прокрутите основную часть тела и наведете курсор на фокус ввода, он автоматически перейдет к началу.
Я бы хотел сохранить поведение прокрутки таким же (т. Е. Когда вы прокручиваете, вы прокручиваете только главную панель, а не боковую навигацию, но сафари не должно прокручиваться вверх при фокусировке ввода.
Эта проблема касается исключительно HTML + CSS, поэтому JS не используется.
Редактировать: это запись в формате GIF: https://imgur.com/a/hPD9YuP