Demo to this answer
Dialog widget library I wrote based on this answer.
Demo for the dialog widget Попробуйте на мобильном устройстве, увеличьте масштаб и коснитесь ссылки.
В то время как событие жестов, похоже, содержит некоторые метаданные о масштабном коэффициенте что-то, нам может быть лучше в управлении и найти его вручную. Поскольку мы хотим сохранить эффект, пока пользователь перемещается в реальном времени, нам нужно пересчитать его во время каждого события прокрутки.
window.addEventListener('scroll', function(e){ /* coming next */ })
Вычислим коэффициент масштабирования и применить его к масштабированно- элементу как CSS3 преобразования:
el.style["transform"] = "scale(" + window.innerWidth/document.documentElement.clientWidth + ")";
Это будет масштабировать элемент обратно масштаба 1 отношение относительно текущего видового экрана зумом, но это вероятно, он по-прежнему неправильно размещен на странице. Это означает, что мы должны получить новые значения для его позиции. То, что на самом деле произойдет на экране, зависит от значения позиции CSS элемента, fixed
будет вести себя иначе, чем absolute
, и в мобильном Safari конкретно, fixed
позиция имеет дополнительный эффект сглаживания при увеличении страницы, что создает некоторые неудобные проблемы для этой причины - Я хотел бы предложить иметь элемент высоты 100% контента в качестве родителя relative
для вашего предполагаемого масштабированного элемента, а затем в вашем скрипте поместите свой элемент absolute
внутри родительского элемента. Следующие значения работают на данном примере демо:
overlay.style.left = window.pageXOffset + 'px';
overlay.style.bottom = document.documentElement.clientHeight - (window.pageYOffset + window.innerHeight) + 'px';
Вы также можете обратить внимание на использование transform-origin
CSS свойства в зависимости от которого точки привязки вы хотите, чтобы масштабирование вступило в силу - это оказывает непосредственное влияние на выравнивании.
Я не знал, что CSS/HTML был смоделирован после природы и вселенной;) – bobsoap
Я также работаю над этой проблемой. Ответ Али Бассама - это булл. Этот эффект преимущественно используется в мобильных мобильных рекламных объявлениях и мобильных наборах пользовательского интерфейса с фиксированными элементами нижнего колонтитула. Пример: http://www.adform.com/BannerTags/Views/Test/Test.aspx?key=MTI5MTI5MQ== – kevzettler
Переключение с «фиксированного» на «абсолютное» при масштабировании - это путь. Как и вы, вы оставляете изображение устройства или браузера по мере того, как пользователь хочет его использовать, чтобы веб-сайт был доступен для пользователей, которые хотят использовать масштабирование, и вам не нужно беспокоиться об уровне масштабирования или будущем браузере или изменениях устройств и ОС в отношении функций масштабирования , – lowtechsun