Медиа-запросы и ширина области просмотра — хорошее исправление CSS не работает на iPad

Существует хорошо известная проблема с шириной медиазапроса, которая не совпадает с шириной области просмотра в некоторых браузерах (браузеры WebKit изменяют размер своей области просмотра CSS, когда видны полосы прокрутки). Я хотел решить проблему, переместив вертикальную полосу прокрутки с body или html на первую оболочку div (как описано в stackoverflow: https://stackoverflow.com/a/10091608/1647291).

Исправление

Вот исправление с помощью CSS:

body, html { overflow: hidden; height: 100%; }
div.wrapper { overflow: auto; height: 100%; }

Он перемещает вертикальную полосу прокрутки от body или html к первому div внутри body. Благодаря этому вам не нужно беспокоиться о ширине области просмотра в медиа-запросах.

Эта проблема

Но, к сожалению, у этого замечательного метода есть один неприятный побочный эффект — на iPad (и, возможно, на некоторых других платформах) страница не может плавно прокручиваться. После того, как вы перестанете касаться экрана, он сразу же перестанет прокручиваться, нет плавного и медленного замедления.

Это простое решение с CSS намного проще и лучше, чем все эти методы с тестированием области просмотра с помощью javascript. Некоторые из них описаны здесь, но они ненадежны или сильно тормозят работу сайта:

Есть ли способ использовать это исправление CSS и заставить iPad правильно прокручиваться?


person maginfortis    schedule 07.06.2013    source источник


Ответы (1)


Возможно, вы слишком много думаете об этом. Мы делаем сайты целыми днями и это не проблема. Я думаю, что вы, возможно, слишком беспокоитесь о конкретной ширине пикселей. Если 680 пикселей против 693 пикселей имеют большое значение, вы думаете об этом неправильно. Я предлагаю вам сначала разработать мобильную версию и сделать точку останова всякий раз, когда она становится уродливой (с ems). Для сайтов с короткими и длинными страницами (иногда появляется полоса прокрутки и перескакивает между страницами, когда полосы прокрутки нет) — просто добавьте это и на этом закончите. Удачи!

   html { overflow-y scroll } 
person nouveau    schedule 07.06.2013