2015-01-06 5 views
0

Проблема, которую я испытываю при просмотре моего сайта с помощью любого устройства iOS 7 с Safari. Каждый раз, когда я меняю страницу на своем веб-сайте, окно браузера становится белым, а затем через мгновение страница начинает рендеринг правильно.Safari iO7: мерцание при переходе страницы при использовании аппаратного ускорения css

Другие сайты этого не делают, поэтому после разрыва моих волос в течение многих часов я сузил его до некоторого CSS, применяемого к моему контейнеру на странице. Это вынуждает аппаратное ускорение посредством:

  • -webkit-transform: translate3d (0,0,0);
  • -webkit-overflow-scrolling: touch;

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

Из того, что я читал, я предполагаю, что это может быть связано с тем, что контейнер html продвигается на уровень (потому что его аппаратное ускорение), и это как-то заставляет браузер отображаться странно.

Я нашел несколько статей по этому вопросу, но не ответил, что работал для меня. Кто-нибудь сталкивался с этим и, возможно, имел решение?

EDIT:

Так с кучей более экспериментирования и чтение, у меня есть еще несколько подсказок.

Что я нашел, так это то, что любой композитный слой, по-видимому, вызывает это для меня при загрузке страницы.

Например, строка меню моего сайта position:fixed (это делает его составным). Когда я делаю меню не position:fixed, при смене страницы панель меню не мерцала. то есть остальная часть страницы пошла белой, а затем через мгновение появилось новое содержимое, но панель меню продолжала отображаться повсюду.

Мой следующий эксперимент, похоже, указывает на то, что на самом деле страница «разгружается», а не загружается новая страница, которая является проблемой. Что я подразумеваю под этим: я использовал, как обычно, -webkit-overflow-scrolling: touch; css. Что я сделал по-другому, я написал строку javascript, чтобы удалить это свойство css из контейнера через несколько секунд. Теперь, когда я изменил страницу, браузер не стал белым, прежде чем отображать новую страницу. Итак, я думаю, это означает, что это связано с тем, как браузер Safari выгружает страницу с составными слоями.

Может ли кто-нибудь подтвердить, могут ли мои подозрения иметь какую-то заслугу, или если я ПОЛНОСТЬЮ неправильно понял ситуацию?

(извинения, если моя терминология неверна, я еще немного новичок в веб-технологий)

+0

Так что ваш сайт работает правильно без '-webkit-transform: translate3d (0,0,0);' и '-webkit-overflow-scrolling: touch;' properties? – robjez

+0

Да, но это, к сожалению, свойства для аппаратного ускорения и гладкой прокрутки.Я надеюсь, что есть решение, которое позволяет мне сохранить их? – Bas

+0

Похоже, вы только начинаете - но вы должны попробовать запустить ваш сайт как одностраничное JS-приложение - таким образом, страница не «перезагружается» как таковая, а действует как полноценное приложение. Это то, как современные сайты, как правило, создаются и помогают избежать такой проблемы, когда полная страница срывается и воссоздается при навигации. – dmp

ответ

0

Я знаю, что в некоторых случаях при использовании менее известных свойств CSS решает эти вопросы. Так дайте попробовать на:

-webkit-perspective: 1000;  
-webkit-backface-visibility: hidden; 

Они должны идти вместе с:

-webkit-transform: translate3d(0,0,0); 
-webkit-overflow-scrolling: touch; 

свойства.

Надеется, что это поможет

EDIT: Просто быть в курсе this вопроса

+0

Привет, спасибо за комментарий. Я дал ему ход, и это, казалось, не повлияло. Я довольно много экспериментировал и нашел интересные результаты. Я изменил свой первоначальный вопрос с новыми деталями. Если у вас есть идеи, которые будут высоко оценены! – Bas

0

С прошивкой 8 был введен новый быстрый компонент веба вида: WKWebView. Safari использует его.

  1. Проблема разгрузки страницы в сочетании с композитными слоями соответственно. Позиция фиксированные элементы ушли при использовании Safari под прошивкой 8 :)

  2. Я также сравнить общие UIWebView и новые WKWebView под IOS 8. Apps с помощью UIWebView для отображения HTML/веб-контента по-прежнему поражаются проблемы :(