Привязка прокрутки CSS застревает при попытке увеличить масштаб

CSS-прокрутка-щелчок работает очень хорошо. Но когда вы прокручиваете на мобильном телефоне одним пальцем, а затем держите этот палец на экране и прокручиваете другим пальцем в противоположном направлении (например, масштабирование ↕), тогда щелчок прокрутки застревает. (независимо от того, в каком браузере)

Он работает даже на рабочем столе, когда вы удерживаете Ctrl во время прокрутки.

Я не знаю, является ли это распространенной проблемой, но я не могу найти никаких исправлений или обходных путей для этой проблемы.

Какие-либо предложения?

Попробуйте на себе:

<!DOCTYPE html>
    <html lang = "en" dir = "ltr">
        <head>
            <meta charset = "utf-8">
            <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' />
            <title></title>
            <style media = "screen">
                .container{
                    scroll-snap-type: y mandatory;
                    height: 50vh;
                    width: 50%;
                    overflow-y: scroll;
                }

                .content {
                    scroll-snap-align: center;
                    height: 50vh;
                    width: 100%;
                }
            </style>
        </head>
        <body>
            <div class = "container">
                <div class = "content" style = "background:blue;">
                    1
                </div>
                <div class = "content" style = "background:red;">
                    2
                </div>
                <div class = "content" style = "background:green;">
                    3
                </div>
                <div class = "content" style = "background:orange;">
                    4
                </div>
            </div>
        </body>
    </html>

не делайте это на всю ширину экрана.

kish 27.02.2019 13:22

@kish Wdym? Это даже не полная ширина экрана.

Silvan 27.02.2019 14:06

Не могли бы вы использовать javascript для обходного пути? Или это должно быть только css?

Sirence 16.01.2020 16:45

@Sirence Только css, когда это возможно.

Silvan 16.01.2020 16:50
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
14
4
925
1

Ответы 1

(Редактировать: это не соответствующий ответ, потому что я неправильно понял вопрос.)

Я запустил ваш фрагмент кода в Firefox (v72) и не увидел описанного вами поведения. Затем я запустил его в Chrome (v79) и увидел проблемное поведение. Я использую Windows 10. (Кстати, хороший фрагмент.)

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

Похоже, это ошибка конкретного браузера. Я предполагаю, что это проблема Chrome/Blink.

Редактировать: Может быть, я вижу что-то другое, чем вы. Все, что я могу сделать, это поделиться тем, что я вижу.

Фаерфокс:
Smooth scrolling in Firefox

Хром:
Jankier scrolling in Chrome

Я могу воспроизвести ошибку на Firefox 72.0.1.

Sirence 16.01.2020 16:46

Я могу воспроизвести ошибку в Firefox 69, Firefox 72 и в Chrome минимум с Chrome 66. Также в новейшей версии Opera 67.0.3564.0

Silvan 16.01.2020 17:04

Когда вы нажимаете Ctrl во время прокрутки, а затем прекращаете прокрутку (масштабирование), поля остаются там, где они есть, до тех пор, пока вы снова не прокрутите в обычном режиме. Затем он исправляет себя (на каждом шаге масштабирования).

Silvan 16.01.2020 17:41

О, я вижу. Я неправильно понял шаги ошибки. Теперь, когда я пытаюсь сделать то же самое, я вижу то же самое поведение. Очень интересно. Я подумываю удалить свой ответ.

Tyler Mumford 16.01.2020 19:30

Другие вопросы по теме