Я хочу , чтобы отключить в два раз водопроводного масштабирования функциональности на указанных элементах в браузере (на сенсорных устройствах), не отключая все функциональные возможности масштабирования .
Например: один элемент можно коснуться несколько раз, чтобы что-то произошло. Это отлично работает в браузерах настольных компьютеров (как и ожидалось), но в браузерах сенсорных устройств масштабирование будет увеличиваться.
Ответы:
Примечание (по состоянию на 2020-08-04): это решение не работает в iOS Safari v12 +. Я обновлю этот ответ и удалю эту заметку, как только найду четкое решение, охватывающее iOS Safari.
Только CSS решение
Добавьте
touch-action: manipulation
к любому элементу, для которого вы хотите отключить масштабирование двойным касанием, как в следующемdisable-dbl-tap-zoom
классе:Из
touch-action
документов (выделено мной):Это значение работает на Android и iOS.
источник
Я использовал это совсем недавно, и он отлично работает на iPad. Не тестировалось на Android или других устройствах (потому что веб-сайт будет отображаться только на iPad).
источник
Я знаю, что это может быть старый, но я нашел решение, которое отлично сработало для меня. Нет необходимости в сумасшедших метатегах и остановке масштабирования контента.
Я не на 100% уверен, насколько это кросс-девайс, но это сработало именно так, как я хотел.Это просто отключит обычную функцию нажатия, а затем снова вызовет стандартное событие щелчка. Это предотвращает масштабирование мобильного устройства, но в остальном работает как обычно.
РЕДАКТИРОВАТЬ: теперь это проверено временем и работает в паре живых приложений. Кажется, на 100% кроссбраузерность и платформа. Приведенный выше код должен работать как решение для копирования и вставки в большинстве случаев, если вы не хотите настраивать поведение перед событием щелчка.
источник
pointer-events: none
Я просто хотел правильно ответить на свой вопрос, так как некоторые люди не читают комментарии под ответом. Итак, вот оно:
Я этого не писал, просто модифицировал. Я нашел версию только для iOS здесь: https://gist.github.com/2047491 (спасибо, Kablam)
источник
CSS для глобального отключения масштабирования двойным касанием (для любого элемента):
Спасибо Росс, мой ответ расширяет его: https://stackoverflow.com/a/53236027/9986657
источник
document.getElementById('root').addEventListener('click', () => {})
Если вам нужна версия , которая работает без JQuery , я изменил ответ Wouter Конечны (который также был создан путем модификации этого суть по Johan Сундстрём ) использовать ванильный JavaScript.
Затем добавьте обработчик событий,
touchstart
который вызывает эту функцию:источник
myButton.addEventListener('touchstart', preventZoom);
Вы должны установить свойство CSS ,
touch-action
чтобы ,none
как описано в этом другом ответе https://stackoverflow.com/a/42288386/1128216источник
Отключите двойное касание для увеличения на сенсорных экранах. Internet Explorer включен.
источник
Простое поведение по умолчанию
click
,dblclick
илиtouchend
события отключить функции масштабирования.Если у вас уже есть обратный вызов для одного из этих событий, просто вызовите
event.preventDefault()
.источник
Если кто-то вроде меня сталкивается с этой проблемой при использовании Vue.js , простое добавление .prevent поможет:
@click.prevent="someAction"
источник
Это предотвратит двойное нажатие на элементы в «теле», это можно изменить на любой другой селектор.
Но это также предотвратило срабатывание моего события щелчка при многократном щелчке, поэтому мне пришлось привязать другое событие, чтобы запускать события при нескольких щелчках
При сенсорном запуске я добавил код для предотвращения увеличения и запуска щелчка.
источник
Я предполагаю, что у меня есть
<div>
область контейнера ввода с текстом, ползунками и кнопками в ней, и я хочу предотвратить случайное двойное касание в ней<div>
. Следующее не запрещает масштабирование области ввода и не относится к двойному касанию и масштабированию за пределами моего<div>
области. Существуют вариации в зависимости от приложения браузера.Я только что попробовал.
(1) Для Safari на iOS и Chrome на Android - предпочтительный метод. Работает за исключением интернет-приложения на Samsung, где двойные нажатия отключаются не полностью
<div>
, а по крайней мере на элементах, обрабатывающих нажатия. Она возвращаетreturn false
, с исключением наtext
иrange
входов.(2) Дополнительно для встроенного интернет-приложения на Android (5.1, Samsung) запрещает двойное касание
<div>
, но запрещает масштабирование<div>
:(3) Для Chrome на Android 5.1 вообще отключает двойное касание, не запрещает масштабирование и ничего не делает с двойным касанием в других браузерах. Запрет двойного касания
<meta name="viewport" ...>
раздражает, потому что<meta name="viewport" ...>
кажется хорошей практикой.источник
Использование сенсорных событий CSS: нет Полностью удаляет все сенсорные события. Просто оставив это здесь на случай, если у кого-то также возникнут эти проблемы, мне потребовалось 2 часа, чтобы найти это решение, и это всего лишь одна строка css. https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action
источник
Вот так
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
источник