Прокрутка не работает в iOS Safari
Обновлено: 31.03.2023
Применяется ли overflow:hidden для работы в iPhone Safari? (9)
Мне помогло сочетание ответов и комментариев здесь и этого похожего вопроса здесь.
Поэтому публикую ответ целиком.
Вот как вам нужно поместить div-оболочку вокруг контента вашего сайта, прямо внутри тега.
Создайте класс-оболочку, как показано ниже.
Я также получил эту идею из этого ответа здесь.
И этот ответ здесь также дает пищу для размышлений. Что-то, что, вероятно, будет одинаково хорошо работать как на настольных компьютерах, так и на устройствах.
Применяется ли overflow:hidden для работы в iPhone Safari? Кажется, нет. Для этого я не могу создать оболочку для всего веб-сайта.
Вы знаете решение?
Пример: у меня длинная страница, и я просто хочу скрыть содержимое, которое находится под «сгибом», и это должно работать на iPhone/iPad.
Мало, я не работал на iOS с Safari. Мне также пришлось добавить:
Чтобы это работало хорошо. Теперь работает нормально :)
У меня была аналогичная проблема, и я обнаружил, что применение overflow: hidden; как html, так и body решили мою проблему.
Для iOS 9 вместо этого может понадобиться использовать следующее: (Спасибо, chaenu!)
Я работал с и
Когда открывается всплывающее окно .
получает высоту 100 % и переполнение: скрыто
Я использую JS/jQuery, чтобы получить фактическую позицию прокрутки страницы и сохранить значение как атрибут данных для тела
Затем я прокручиваю до позиции прокрутки в .wrapper DIV (не в окне)
Вот мое решение:
Это хорошо работает с обеих сторон. ПК и мобильные устройства (iOS).
Советы и улучшения приветствуются :)
Работает в браузере Safari.
Просто измените рост
Почему бы не обернуть содержимое, которое вы не хотите отображать, в элемент с классом и установить для этого класса значение display:none в таблице стилей, предназначенной только для iphone и других портативных устройств?
Да, это связано с новыми обновлениями в Safari, которые теперь нарушают ваш макет, если вы используете overflow: hidden, чтобы позаботиться об очистке div.
Если мы показываем модальное окно на iOS, нам нужно предотвратить взаимодействие событий внутри модального окна со страницей за модальным окном. В предыдущем эпизоде «Веселье с Safari» мы могли использовать preventDefault() для события «touchmove», но в iOS 15 это больше не работает. Вот так.
Как мы это делаем?
Мы устанавливаем высоту как HTML, так и элемента body равной высоте окна, а затем передаем параметру overflow значение hidden, чтобы содержимое было обрезано.
Но что на самом деле означает высота окна? Чтобы изучить это, я добавил меру в правую часть страницы. Он будет масштабироваться по высоте, как указано в примерах.
На данный момент установлено значение 100 пикселей .
Высота 100vh
Vh — это единица высоты области просмотра, 1vh означает 1% высоты области просмотра.
Отлично. Давайте установим значение 100vh и посмотрим, что произойдет.
Нет. Это не сработает. В iOS 100vh всегда соответствует полной высоте области просмотра, даже если отображается нижний колонтитул.
Если вы просматриваете эту страницу в iOS Safari, прокрутите немного вверх и вниз, чтобы увидеть, что высота остается фиксированной независимо от того, активен нижний колонтитул или нет.
Использование -webkit-fill-available
Давайте попробуем использовать свойство -webkit-fill-available.
Это -webkit- вещь, поэтому, если вы используете Firefox, показатель теперь будет привязан к 0
Это поможет. Но это приводит к тому, что модальное окно не заполняет все доступное пространство.
-webkit-fill-available заполнит «безопасное» пространство, исключая пространство, которое займет нижний колонтитул, если он активен.
Нам нужно все пространство.
Оказалось, что window.innerHeight отражает фактическое доступное пространство. Вот что нам нужно.
Но мы оба знаем, что window.innerHeight — это свойство JavaScript и что оно не будет работать.
Синхронизация window.innerHeight
К счастью, для этого можно использовать настраиваемые свойства CSS.
Теперь мы переходим в область JavaScript, где мы обновляем пользовательское свойство при изменении размера окна.
Событие "resize" запускается, когда нижний колонтитул iOS Safari масштабируется по высоте, поэтому это хорошо выравнивает нашу меру с высотой страницы.
Я знаю, что мы могли бы также «просто» установить Measure.style.height, но через минуту мы собираемся использовать пользовательские свойства для нашего модального окна, так что мы могли бы сделать здесь лишнюю милю.
Если вы используете iOS, посмотрите, правильно ли масштабируется показатель, немного прокрутив вверх и вниз.
Модаль
Мы почти вышли из леса. Наша мера теперь должна иметь правильный размер независимо от того, виден нижний колонтитул iOS Safari или нет.
Теперь мы применим эту высоту к элементам html и body при активации нашего модального окна. Это предотвращает прокрутку страницы.
Мы добавляем класс is-locked в наш HTML-элемент, когда показываем модальное окно.
Когда назначается класс is-locked, мы используем его для установки необходимых стилей, чтобы страницу нельзя было прокручивать.
Погоди, а что там делает этот calc()?!
Попробую объяснить. Если нижний колонтитул iOS Safari скрыт при открытии модального окна, iOS покажет нижний колонтитул, если пользователь сделает жест вертикального панорамирования, 1px предотвращает это. Я не знаю. 🤷♂️
Теперь мы прослушиваем событие resize, чтобы синхронизировать пользовательское свойство CSS --window-inner-height с window.innerHeight в среде JavaScript.
Чтобы запретить iOS скрывать нижний колонтитул, когда отображается модальное окно и виден нижний колонтитул, нам нужно запретить действие по умолчанию для события pointermove.
Если мы хотим поддерживать iOS 14, нам также нужно добавить touchmove.
Мы почти закончили.
Поскольку мы изменяем размер документа, позиция прокрутки пользователя теряется при открытии модального окна. Поэтому нам нужно запомнить эту позицию до того, как она откроется, и восстановить ее, когда модальное окно закроется.
Попробуйте его в iOS Safari 15, нажав кнопку "Открыть модальное окно" ниже. Он был протестирован с адресной строкой внизу окна просмотра (по умолчанию) и вверху. Мы можем переместить его наверх, нажав «aA», а затем «Показать верхнюю адресную строку».
Моальное окно намеренно слегка прозрачно, чтобы мы могли видеть, что страница прокручивается вверх. Мы можем назначить стиль background-filter: blur(20px) модальному корневому элементу, чтобы сделать это менее очевидным.
Я искренне надеюсь, что разработчики Apple, работающие над Safari, исправят этот беспорядок в следующем обновлении, но я не затаил дыхание.
Я использую Твиттер, чтобы делиться новыми советами и рекомендациями по веб-разработке, поэтому подпишитесь на меня, если вам это интересно и вы хотите узнать больше.
Независимый разработчик продуктов
Последние плагины PQINA
Высокопроизводительное редактирование изображений JavaScript в браузере. Обрезка, поворот, переворачивание, фильтрация, изменение размера, комментирование и преобразование изображений на стороне клиента — все это легко с помощью редактора изображений Pintura.
Библиотека JavaScript, которая загружает все, что вы в нее бросаете, оптимизирует изображения для более быстрой загрузки и предлагает отличный, доступный и плавный пользовательский интерфейс.
В Safari нет встроенной функции автоматической прокрутки. Это проблема для людей, которые ежедневно читают десятки статей и часами прокручивают веб-страницы. Автопрокрутка позволяет людям читать статьи без помощи рук и полезна при чтении длинных текстов. Если бы только Apple добавила эту функцию в Safari. Но не беспокойтесь, если вам нужна эта функция на вашем iPhone или iPad, есть простой обходной путь, который вы можете использовать. Для этого мы будем использовать приложение «Ярлыки». Ярлыки — это мощное приложение для автоматизации, которое Apple выпустила вместе с iOS 12. Мы опубликовали несколько статей о ярлыках. Вы должны прочитать их, если хотите узнать больше о предмете. Для этой статьи вам не требуются какие-либо предварительные знания, поэтому это не обязательно. Давайте посмотрим, как включить автопрокрутку веб-страниц в Safari, не так ли?
Включить автоматическую прокрутку веб-страниц в Safari
Этапы просты. Единственным предварительным условием является наличие на вашем устройстве приложения «Ярлыки». Если вы удалили приложение, вы можете скачать и установить его по этой ссылке. Если на вашем устройстве установлена iOS 13 или iPadOS 13, простая установка приложения может не сработать. Мы создали руководство по установке ярлыков, которое поможет вам заставить его работать. Установив приложение «Быстрые команды», выполните следующие действия:
<р>1. Нажмите на ссылку и нажмите кнопку «Получить ярлык», а затем «Открыть».
Читать статьи о Safari без помощи рук
Итак, это был простой способ использовать Safari без помощи рук для удобного чтения длинных текстов. Для этой статьи мы протестировали множество ярлыков с автоматической прокруткой, и тот, который мы здесь показываем, сработал лучше всего. Итак, скачайте и используйте его, а если возникнут проблемы, сообщите нам.
Вы спрашивали, как отобразить полосу прокрутки в Safari?
- Нажмите на меню Apple в левом верхнем углу экрана, затем выберите «Системные настройки».
- Затем выберите панель общих настроек; это самый первый, вверху.
- Под заголовком "Показывать полосы прокрутки" вы найдете три параметра: "Автоматически в зависимости от устройства ввода", "При прокрутке" и "Всегда".
Точно так же, почему я не могу прокрутить сафари вниз? Попробуйте дважды коснуться любой стороны экрана по краям. Нажмите двумя пальцами внутри окна, которое вы пытаетесь прокрутить, и одновременно перемещайте их вверх или вниз. Или сведите вместе большой и указательный пальцы и переместите их вверх или вниз.
Часто задаваемый вопрос: как получить полосу прокрутки на Mac?
- В строке меню нажмите «Меню Apple» > «Системные настройки».
- Нажмите "Общие".
- Напротив заголовка "Показывать полосы прокрутки" выберите "Всегда".
Удивительно, но как сделать, чтобы полоса прокрутки отображалась?
- Нажмите «Файл» > «Параметры».
- На вкладке "Дополнительно" перейдите к разделу "Экран".
- Выберите «Показать горизонтальную полосу прокрутки» и «Показать вертикальную полосу прокрутки», а затем нажмите «ОК».
Почему полоса прокрутки не отображается?
Полосы прокрутки могут исчезнуть, когда элемент страницы, содержащий содержимое, расширяется, чтобы вместить избыточное содержимое. … Нажатие кнопки «Развернуть» в окне браузера увеличит ширину окна до ширины монитора, что приведет к исчезновению горизонтальной полосы прокрутки.
Почему моя полоса прокрутки исчезла?
Word Полоса прокрутки исчезает в документе, если мышь не перемещается в течение нескольких секунд или если курсор мыши перемещается за пределы открытого документа. Это нельзя изменить. Если вертикальная полоса прокрутки полностью исчезла в Word, проверьте Файл/Параметры/Дополнительно.
Как получить полосу прокрутки на Iphone?
Чтобы использовать полосу прокрутки, слегка проведите пальцем, чтобы она появилась, нажмите и удерживайте ползунок прокрутки, а затем перетащите его для прокрутки. Единственная трудность заключается в том, что его может быть сложно захватить, так как он исчезает через несколько секунд после прекращения прокрутки, а попасть по нему толстым пальцем очень сложно.
Как мне прокручивать вниз на моем IPAD?
Что позволяет прокручивать страницу вниз?
С клавиатурой вы можете использовать клавиши со стрелками вверх или вниз для прокрутки нескольких строк за раз. Клавиши «Page Up» и «Page Down» или клавиша «Пробел» прокручивают страницу вниз на одну страницу за раз. Большинство современных компьютеров оснащены мышью с колесиком или кнопкой, позволяющей прокручивать вверх и вниз, а в некоторых случаях и слева направо.
Почему я не могу прокручивать на своем Macbook?
Откройте «Системные настройки» через меню Apple в левой верхней части экрана. 2. Выберите «Трекпад» в разделе «Оборудование». … Поместите два пальца на трекпад вашего Macbook и проведите ими вверх или вниз, чтобы прокрутить текущую веб-страницу или документ вверх или вниз.
Как мне получить полосу прокрутки на моем MacBook Air?
Как сделать так, чтобы в Chrome отображалась полоса прокрутки?
Почему полоса прокрутки не работает в Excel?
В большинстве случаев пользователи не могут прокручивать электронные таблицы Excel вниз, поскольку в них есть закрепленные панели. Чтобы разморозить панели в Excel, выберите вкладку «Вид». Нажмите кнопку «Закрепить области». Затем выберите параметр Разморозить панели.
Почему не работает колесо прокрутки?
Если мышь не прокручивается, чаще всего это происходит по двум причинам. Во-первых, пыль и грязь вызывают механические проблемы с колесиком мыши. … Другие проблемы включают неправильные настройки мыши в системных настройках ОС, поврежденные системные файлы или использование мыши, несовместимой с вашей операционной системой.
Как избавиться от полосы прокрутки?
Введите «Удалить полосы прокрутки» (без кавычек) в поле поиска и нажмите «Ввод». Нажмите кнопку «Удалить полосы прокрутки», расположенную над результатами поиска.
Почему я не могу прокручивать слово?
Если вы не видите полосу прокрутки, возможно, вы находитесь в режиме полноэкранного чтения, в котором полосы прокрутки не отображаются. Нажмите клавишу «Esc», чтобы выйти из полноэкранного режима и вернуться к обычному просмотру документа.
Читайте также: