Исправлена панель навигации, скрытая за адресной строкой браузера на Chrome Mobile

#html #google-chrome #mobile #scroll #css-position

#HTML #google-chrome #Мобильный #прокрутка #css-позиция

Вопрос:

Я только начал работать над проектом и заметил, что при тестировании его в Chrome на мобильной iOS, похоже, возникла проблема с моей исправленной панелью навигации. Что расстраивает, так это то, что сначала я подумал, что это, возможно, ошибка в браузере, но, проверив прошлые проекты, они, похоже, не имеют проблем с фиксированным свойством и ведут себя так, как вы ожидаете.

Похоже, что происходит то, что исправленная панель навигации скрывается под адресной строкой браузера, когда вы начинаете прокручивать вниз. Я прикрепил изображение, чтобы, надеюсь, объяснить, что я имею в виду.

Затем я подумал, что это может быть конфликт со сценарием или таблицей стилей, поэтому я удалил свой шаблон до голых костей, и, похоже, он все еще ведет себя так же.

Кто-нибудь сталкивался с этим. Есть ли проблема с моими мета-тегами. Я пробовал разные варианты, и, похоже, он все еще делает то же самое. Любая помощь приветствуется.

Мой урезанный код:

 <!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8" />
  <!-- mobile settings -->
  <meta name="viewport" content="width=device-width, maximum-scale=2, initial-scale=1" />
</head>

<body>
  <div id="wrapper">
    <div style="background: red; position:fixed;
top: 0;
left:0;
width:100%;
z-index: 1030; height: 80px;">
</div> <main class="main-content">
  <div style="height: 1950px;"></div>



</main>
  </div><!-- /wrapper -->

</body>

</html>
  

введите описание изображения здесь

Красная панель навигации в два раза больше высоты, которую вы видите на прикрепленном изображении. Верхняя половина начала скрываться за адресной строкой браузера.

Ответ №1:

На самом деле есть проблема с IOS и position: исправлено.. Я решил этот путь.. Я хотел бы быть полезным и для вас:

 * {box-sizing:border-box;}
body {
  height:100vh; 
  max-height:100vh;
  min-height:100vh;
  overflow: hidden;
  position:relative;
}
#wrapper {
  padding-top: 80px;
  height:100vh; 
  max-height:100vh;
  min-height:100vh;
  overflow-y:auto;
  overflow-x:hidden;
}  
 <!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8" />
  <!-- mobile settings -->
  <meta name="viewport" content="width=device-width, maximum-scale=2, initial-scale=1" />
</head>

<body>
  <div id="wrapper">
    <div style="background: red; position:absolute;
top: 0;
left:0;
width:100%;
z-index: 1030; height: 80px;">
</div> 

<main class="main-content">
test
  <div style="height: 1950px;"></div>



</main>
  </div><!-- /wrapper -->

</body>

</html>  

Все дело в том, что я полагался на абсолютную позицию вместо фиксированной позиции

Комментарии:

1. Большое вам за это спасибо. Я попробую и посмотрю, поможет ли это мне. Что меня смущает, так это то, что у меня есть другие сайты, у которых, похоже, нет проблемы с position: исправлено. И приведенный выше пример, похоже, подходит для Safari iOS. Похоже, проблема в Chrome. Я подумал, что это также может быть связано с выпадающей опцией обновления, которая влияет на размер окна просмотра.

2. Что касается меня, то со мной дважды случалась одна и та же проблема на двух разных веб-сайтах, пока я действительно не понял, что в IOS была проблема с исправленной позицией .. возможно, версия браузера является причиной

3. Вы сталкиваетесь с той же проблемой и в Safari?

4. Да, Safari тоже

5. Вышесказанное действительно работает. Я также обнаружил, что это решение (с использованием -webkit-fill-available) является эффективным: css-tricks.com/css-fix-for-100vh-in-mobile-webkit