Как отключить прокрутку на телефоне
Это звучит так, будто должно быть решение для этого по всему Интернету, но я не уверен, почему я не могу его найти. Я хочу отключить горизонтальную прокрутку на мобильных устройствах. В основном пытается добиться этого:
Это может быть релевантная информация: у меня также есть это в моем теге, потому что я также не хочу, чтобы пользователь мог увеличить:
Относительная позиция важна, и я просто споткнулся об этом. Не удалось заставить его работать без него.
Это должен быть принятый ответ. Отличная детективная работа. Согласен с @daekano Этот ответ должен быть помечен как принятый. Это сработало и для меня. Кто-нибудь может объяснить, как позиция: родственник помогает этой работе? Я не могу поверить, что-то такое маленькое, как положение: относительный; держал его от работы. Спасибо! Это работает, но испортила плавную прокрутку, которая есть у сенсорных устройств . (Я не могу нажать вверх и увидеть прокрутку страницы, она перестает прокручиваться, как только я отпускаю палец) По какой-то причине это работает на устройствах Android, но не на любых устройствах IOS, которые я пытаюсьОтвет cgvector не работал у меня, но это делало:
Я бы не оставил его просто так, нужна более разумная логика, чтобы выбрать, когда нужно предотвращать прокрутку, но это хороший старт.
вы понимаете, что вы отключаете даже вертикальную прокрутку страниц с этим, верно? Да, именно поэтому он говорит, что a smarter logic is needed to select when to prevent the scrolling . Я не могу использовать это, потому что это также предотвращает contextmenu любого contextmenu HTML 5 (поддерживается Firefox 20 для Android). это только я или это кажется совершенно безрассудным? Чанго - отличное решение! Поскольку я использую собственный скрипт прокрутки в своем мобильном веб-приложении, этот фрагмент кода, наконец, решил все мои проблемы сразу! Работал в iOS с Safari, но сломал Chrome на Android. Tobl «s ответ работал отлично для меня. Это также останавливает прокрутку внутри тела. Даже прокручиваемые дивы!Для будущих поколений:
Чтобы предотвратить прокрутку, но сохраните контекстное меню, попробуйте
Он по-прежнему предотвращает путь больше, чем может кому-то понравиться, но для большинства браузеров единственное поведение по умолчанию, которое следует предотвратить, должно прокручиваться.
Для более сложного решения, которое позволяет прокручивать элементы внутри неконтролируемого тела и предотвращает использование резиновой ленты, посмотрите на мой ответ здесь:
Только что протестировал и отлично работал с Safari на iOS, а также с Chrome и Firefox на Android. Прочитайте мой ответ. Я сказал добавить его в тег HTML, а не только в тело. на некоторых мобильных устройствах прокрутка отключается полностью.Я подозреваю, что большинство людей действительно хотят отключить масштабирование/прокрутку, чтобы собрать больше приложений; потому что ответы, похоже, содержат элементы решений как для масштабирования, так и для прокрутки, но никто не прибил ни одного.
Чтобы ответить на OP, единственное, что вам нужно сделать, чтобы отключить прокрутку, - это перехватить события scroll и touchmove окна и вызвать preventDefault и stopPropagation в событиях, которые они генерируют; так
И в таблице стилей убедитесь, что теги body и html включают следующее:
Однако прокрутка - это одно, но вы, вероятно, тоже хотите отключить масштабирование. Что вы делаете с метатегами в вашей разметке:
Все это вместе дает вам приложение, похожее на опыт, возможно, лучше всего подходит для холста.
(Будьте осторожны с рекомендацией некоторых добавить атрибуты, такие как initial-scale и width в метатег, если вы используете холст, потому что холсты масштабируют свое содержимое, в отличие от элементов блока, и вы завершаете с уродливым холстом, чаще всего).
похоже, что для этого должно быть решение по всему интернету, но я не уверен, почему я не могу его найти. Я хочу отключить горизонтальную прокрутку на мобильных устройствах. В основном, пытаясь достичь этого:
Это может быть соответствующая информация: у меня также есть это в моей голове, потому что я также не хочу, чтобы пользователь мог увеличивать:
положение относительно важно, и я просто споткнулся об этом. Без него ничего не получится.
ответ cgvector не работал для меня, но это сделало:
Я бы не оставил его просто так, нужна более умная логика, чтобы выбрать, когда предотвратить прокрутку, но это хорошее начало.
для будущих поколений:
чтобы предотвратить прокрутку, но сохранить contextmenu, попробуйте
он по-прежнему предотвращает больше, чем некоторые могли бы, но для большинства браузеров единственным предотвращенным поведением по умолчанию должна быть прокрутка.
для более сложного решения, которое позволяет прокручивать элементы внутри нескролируемого тела и предотвращает rubberband, взгляните на мой ответ здесь:
Я подозреваю, что большинство людей действительно хотят отключить масштабирование / прокрутку, чтобы собрать более похожий на приложение опыт; потому что ответы, похоже, содержат элементы решений для масштабирования и прокрутки, но никто не прибил ни один из них.
чтобы ответить OP, единственное, что вам нужно сделать, чтобы отключить прокрутку, - это перехватить окно scroll и touchmove события и вызов preventDefault и stopPropagation о событиях, которые они генерируют; как так что
и в вашей таблице стилей, убедитесь, что ваш body и html теги включают в себя следующее:
однако прокрутка-это одно, но вы, вероятно, хотите отключить масштабирование. Что вы делаете с метатегом в своей разметке:
все они вместе взятые дают вам приложение, как опыт, вероятно, лучше всего подходит для холста.
(будьте осторожны с советами некоторых, чтобы добавить атрибуты, такие как initial-scale и width к метатегу, если вы используете холст, потому что canvasses масштаб их содержимое, в отличие от блочных элементов, и вы получите уродливый холст, чаще всего).
Итак, у меня здесь есть сайт . У меня есть несколько облаков, которые движутся по странице с jQuery. Проблема начинается, когда вы просматриваете страницу на мобильном телефоне. Вы можете прокрутить страницу и следовать за облаками. Это нетрудно сделать, и многие люди это заметили. На PC нет никаких проблем, хотя раньше они были. Однако я отключил клавиши со стрелками и Пробел как движение, так что вы больше не можете воспроизвести мобильную ошибку на PC. Если бы кто-нибудь мог мне помочь, это было бы здорово, спасибо.
EDIT: это js для облаков. Может быть, это то, что вызывает, чтобы это произошло. Однако на самом деле я хочу полностью отключить горизонтальную прокрутку на мобильном телефоне, если это возможно
1 ответ
У меня есть UIView , как трамплин iPhone. Я создал его, используя UIScrollView и UIButtons . Я хочу отключить горизонтальную прокрутку на указанном scrollview. Я хочу только вертикальную прокрутку. Как я могу добиться этого?
Есть ли способ отключить правую горизонтальную прокрутку, но разрешить левую горизонтальную прокрутку? let touches = [] window.addEventListener('touchmove', event => < event.preventDefault() >, false) window.addEventListener('touchstart', event => < touches[0] = event.touches[0].pageX >.
Взглянув на свой веб-сайт, вы исправите текущую проблему (которая присутствует в настольных браузерах):
Я объясню, почему необходимо каждое из этих правил:
- width: 100%; сто процентов окна браузера
- overflow: hidden когда элементы (например, img ) перемещаются за края (100%) окна браузера, это будет hidden
- position: relative - сделайте это на .header или вышеуказанные правила должны быть на body
- height: auto вы задаете статический height для элемента, у которого дочерний элемент расширяется за эту высоту , если вы этого не сделаете и используете overflow: hidden , вертикальные элементы в .header не будут отображаться
Важно отметить, что это исправление для гораздо более серьезной проблемы; эта проблема заключается в том, как вы разрабатываете сайт в настоящее время. Есть много других проблем, вот краткий список:
- не заключайте все содержимое сайта в элемент header
- используйте имена семантических классов и избегайте использования имен, зарезервированных для тегов HTML (у вас есть элемент с именем .body
- привыкайте к HTML5 - это ток
- структурируйте свои HTML элемента логически
Похожие вопросы:
я хочу отключить вертикальную прокрутку для мобильных устройств. с помощью : body работает для обычных браузеров, но на мобильных устройствах, если есть элемент шире экрана,он.
На мобильном телефоне (или прокрутите браузер до 320px) я получаю горизонтальную прокрутку, это, по-видимому, связано с навигацией на мобильном телефоне, поскольку она исчезает, когда навигатор.
Я создал UITableView с небольшой рамкой, например (0,0,50,50). Я хочу отключить горизонтальную прокрутку, но сохранить вертикальную прокрутку. Я установил self.table.bounces = NO , но tableview.
У меня есть UIView , как трамплин iPhone. Я создал его, используя UIScrollView и UIButtons . Я хочу отключить горизонтальную прокрутку на указанном scrollview. Я хочу только вертикальную прокрутку.
Есть ли способ отключить правую горизонтальную прокрутку, но разрешить левую горизонтальную прокрутку? let touches = [] window.addEventListener('touchmove', event => < event.preventDefault() >.
Как отключить горизонтальную прокрутку в UICollectionView ? Я попытался добавить это: self.scrollDirection = UICollectionViewScrollDirectionVertical; до 30, но это не сработало. Я хочу иметь только.
Я хочу отключить горизонтальную полосу прокрутки на iPad в Safari, когда нахожусь на своем сайте. Я пробовал e.preventDefault , но это, кажется, отключает как вертикальную, так и горизонтальную.
Есть ли вообще возможность отключить горизонтальную прокрутку в javascript? Я использую следующее: document.body.addEventListener('touchmove', function (event) < event.preventDefault(); >, false);.
Я все еще новичок в программировании, но хочу знать, как отключить горизонтальную прокрутку на мобильных устройствах. Как вы можете видеть на моей странице здесь , изображение сверху больше, чем.
Я разработал веб-сайт. Он отлично выглядит, когда я изменяю размер окна браузера на своем ноутбуке, но когда я открыл его в мобильном браузере, он установил горизонтальную прокрутку, что делает его.
Пример: когда в потоке, если я проверяю условие, и если он возвращает true разрешение, и если условие возвращает false disable swiping.
Решение, которое я использую, - это
Затем выберите это вместо встроенного <mypackage.CustomViewPager android: id = "@ + id / myViewPager" android: layout_height = "match_parent" android: layout_width = "match_parent" /> в XML
Вам просто нужно вызвать метод setPagingEnabled с «false», и пользователи не смогут прокручивать страницы.
Проблема с вышеописанной методологией: я не могу установить свойство в потоке, I: e . Я либо могу включить или отключить прокрутку. Но я не могу это сделать на основании условия
Вопрос:
- Могу ли я достичь своей цели каким-то другим способом, если да, то что это?
- Или это невозможно?
Решение, которое я использую, - это
Затем выберите это вместо встроенного <mypackage.CustomViewPager android: id = "@ + id / myViewPager" android: layout_height = "match_parent" android: layout_width = "match_parent" /> в XML
Вам просто нужно вызвать метод setPagingEnabled с «false», и пользователи не смогут прокручивать страницы.
Проблема с вышеописанной методологией: я не могу установить свойство в потоке, I: e . Я либо могу включить или отключить прокрутку. Но я не могу это сделать на основании условия
Вопрос:
- Могу ли я достичь своей цели каким-то другим способом, если да, то что это?
- Или это невозможно?
Отключить прокрутку прогматически,
и используйте это, чтобы провести вручную
Лучшее решение для меня. Во-первых, вы создаете класс следующим образом:
-Тогда измените это в своем макете: <com.mypackage.CustomViewPager для этого view_pager.disableScroll(true);
-Наконец, вы можете отключить его: view_pager.disableScroll(false); или включить его: ViewPager
Надеюсь, что это поможет вам :)
В своем пользовательском адаптере пейджера просмотра переопределите эти методы ViewPager .
И чтобы включить, просто верните каждый super метод:
super.onInterceptTouchEvent(event) и super.onTouchEvent(event) .
Я нашел другое решение, которое работало для меня, следуя этой ссылке
Он в основном отменяет метод, canScrollHorizontally чтобы отключить прокрутку пальцем. Как бы то ни было setCurrentItem .
Упрощенное решение, просто отлично работает, эти методы переопределения должны находиться в вашем адаптере viewpager костюма для переопределения слушателей TouchEvent и замораживания make'em;
Читайте также: