У меня есть, div
что есть background:transparent
, наряду с border
. Под этим у div
меня есть больше элементов.
В настоящее время я могу щелкнуть нижележащие элементы, когда щелкаю за пределами наложения div
. Тем не менее, я не могу щелкнуть базовые элементы при нажатии непосредственно на оверлей div
.
Я хочу быть в состоянии щелкнуть через это, div
чтобы я мог щелкнуть на базовых элементах.
Также приятно знать ...
Вы можете отключить события указателя в родительском элементе (возможно, в прозрачном div), но включить его для дочерних элементов.
Это полезно, если вы работаете с несколькими перекрывающимися слоями div, где вы хотите иметь возможность щелкать дочерние элементы, в то время как родительские слои вообще не реагируют ни на какие события мыши.
Для этого все родительские div получают
pointer-events: none
и его кликабельные потомки получают события указателя,pointer-events: auto
источник
Разрешение пользователю нажимать через элемент
div
к базовому элементу зависит от браузера. Все современные браузеры, включая Firefox, Chrome, Safari и Opera, понимаютpointer-events:none
.Для IE это зависит от фона. Если фон прозрачный, клик работает без необходимости что-либо делать. С другой стороны, для чего-то вроде
background:white; opacity:0; filter:Alpha(opacity=0);
IE нужна ручная пересылка событий.См. Тест JSFiddle и события указателя CanIUse .
источник
Я добавляю этот ответ, потому что я не видел его здесь полностью. Я смог сделать это с помощью elementFromPoint. Итак, в основном:
В моем случае наложенный div абсолютно позиционирован - я не уверен, что это имеет значение. Это работает как минимум на IE8 / 9, Safari Chrome и Firefox.
источник
источник
$('#elementontop)
должно быть$('#elementontop')
?Мне нужно было сделать это и решил пойти по этому пути:
источник
В настоящее время я работаю с речевыми шарами. Но поскольку всплывающая подсказка с указателем заключена в элемент div, некоторые ссылки под ним больше не могут щелкать. Я не могу использовать extjs в этом случае. Смотрите базовый пример для моего урока речи требует HTML5
Поэтому я решил собрать все координаты ссылок внутри воздушных шаров в массиве.
Я вызываю эту функцию на каждом (новом) воздушном шаре. Он захватывает координаты левого / верхнего и правого / нижнего углов link.class - дополнительно атрибут name для того, что делать, если кто-то нажимает на эти координаты, и я любил устанавливать 1, что означает, что он не был нажат , И отмените этот массив на clickarray. Вы также можете использовать толчок.
Для работы с этим массивом:
Эта функция проверяет координаты события щелчка тела или уже щелкнуло и возвращает атрибут имени. Я думаю, что нет необходимости углубляться, но вы видите, что это не так уж сложно. Надеюсь, что был enlish ...
источник
это не работает таким образом. Обходной путь заключается в том, чтобы вручную проверять координаты щелчка мыши по области, занимаемой каждым элементом.
Площадь, занимаемая элементом, может быть найдена путем: 1. получения местоположения элемента относительно верхнего левого края страницы и 2. ширины и высоты. библиотека типа jQuery делает это довольно простым, хотя это можно сделать простым js. добавление обработчика событий для
mousemove
наdocument
объекте обеспечит непрерывное обновление положения курсора мыши из верхней и левой части страницы. Решение, находится ли мышь над каким-либо заданным объектом, состоит в проверке, находится ли положение мыши между левым, правым, верхним и нижним краями элемента.источник
Нет, вы не можете нажать «через» элемент. Вы можете получить координаты клика и попытаться выяснить, какой элемент находился под щелкающим элементом, но это действительно утомительно для браузеров, у которых этого нет
document.elementFromPoint
. Тогда вам все равно придется эмулировать действие по умолчанию, нажав, что не обязательно тривиально, в зависимости от того, какие элементы у вас там.Поскольку у вас есть полностью прозрачная область окна, вам, вероятно, будет лучше реализовать ее как отдельные граничные элементы снаружи, оставляя центральную область свободной от препятствий, чтобы вы могли просто щелкнуть прямо через нее.
источник
Другая идея (ситуативно) заключается в следующем:
Какие-нибудь мысли?
источник
Я думаю, что вы можете рассмотреть возможность изменения разметки. Если я не ошибаюсь, вы хотите поместить невидимый слой над документом, и ваша невидимая разметка может предшествовать изображению вашего документа (это правильно?).
Вместо этого я предлагаю поместить невидимое сразу после изображения документа, но изменить положение на абсолютное.
Обратите внимание, что вам нужно, чтобы родительский элемент имел положение: относительное, и тогда вы сможете использовать эту идею. В противном случае ваш абсолютный слой будет размещен только в верхнем левом углу.
Надеюсь это поможет. Смотрите здесь для получения дополнительной информации о позиционировании CSS.
источник
a
Например, просто оберните тег вокруг всего фрагмента HTML.в моем примере мой класс титров имеет эффекты при наведении курсора на события указателя: нет;ты просто проиграешь
Обтекание содержимого сохранит ваши эффекты при наведении, и вы можете нажать на всю картинку, включая div, с уважением!
источник
Вы можете разместить наложение AP, как ...
просто положите его туда, где вы не хотите, т.е. Работает во всем.
источник
Более простым способом было бы встроить прозрачное фоновое изображение, используя URI данных, следующим образом:
источник
Я думаю, что
event.stopPropagation();
следует упомянуть и здесь. Добавьте это к функции Click вашей кнопки.Предотвращает всплытие события в DOM-дереве, предотвращая уведомление любых родительских обработчиков о событии.
источник
Это не точный ответ на вопрос, но может помочь найти обходной путь для него.
У меня было изображение, которое я прятал при загрузке страницы и которое отображалось при ожидании вызова AJAX, а затем снова скрывалось ...
Я нашел единственный способ отобразить свое изображение при загрузке страницы, а затем заставить ее исчезнуть и щелкнуть объекты, на которых находилось изображение, перед тем как скрыть его, это поместить изображение в DIV, сделать размер DIV 10x10 пикселей или маленьким. достаточно, чтобы предотвратить возникновение проблемы, а затем скрыть содержащий div. Это позволило изображению переполнить div, пока он виден, и когда div был скрыт, только область div была затронута невозможностью щелкать объекты ниже, а не весь размер изображения, которое DIV содержал и отображал.
Я перепробовал все методы, чтобы скрыть изображение, включая CSS display = none / block, opacity = 0, скрывая изображение с hidden = true. Все они привели к тому, что мое изображение было скрыто, но область, в которой оно отображалось, действовала так, будто на нем находилось покрытие, поэтому щелчки и т. Д. Не воздействовали на лежащие в основе объекты. Как только изображение оказалось внутри крошечного DIV, и я спрятал крошечный DIV, вся область, занятая изображением, была чистой, и была затронута только крошечная область под DIV, которую я спрятал, но, поскольку я сделал его достаточно маленьким (10x10 пикселей), проблема было исправлено (вроде).
Я нашел, что это грязный обходной путь для простой проблемы, но я не смог найти способ скрыть объект в его исходном формате без контейнера. Мой объект был в форме и т. Д. Если у кого-то есть способ получше, пожалуйста, дайте мне знать.
источник