Passez la souris à travers des événements de positionnement absolu de l'élément
Je suis d'essayer de capturer les événements de la souris sur un élément avec un autre positionnement absolu de l'élément sur le dessus de cela.
Droit maintenant, événements, sur le positionnement absolu de l'élément de la frapper et de la bulle jusqu'à son parent, mais je veux qu'il soit "transparent" pour ces événements de souris et de les transmettre à tout ce qui est derrière elle. Comment devrais-je mettre en œuvre cette?
Vous devez vous connecter pour publier un commentaire.
Est une propriété CSS qui rend les événements de "passer à travers" l'élément auquel il s'applique et rend l'événement de se produire sur l'élément "en-dessous".
Voir pour plus de détails: https://developer.mozilla.org/en/css/pointer-events
Il n'est pas pris en charge jusqu'à IE 11; tous les autres fournisseurs de soutien depuis assez peu de temps (soutien global était d'environ 92% en 12/'16): http://caniuse.com/#feat=pointer-events (merci à @s4y pour assurer le lien dans les commentaires).
pointer-events
existé! Je peut passer de la accepté de répondre à celle-ci à un certain point.pointer-events
n'est toujours pas super génial, mais il est de mieux en mieux. Pour une plus-compatibles en option, rendez-vous avec @JedSchmidt de réponse."pointer-events:none;"
malheureusement, le soi-disant élément inerte sera toujours arrêter le chaîne d'événements.Si vous avez besoin d'mousedown, vous pourriez être en mesure de le faire avec l'
document.elementFromPoint
méthode, par:x
ety
les coordonnées de l'événement pour ladocument.elementFromPoint
méthode pour récupérer l'élément en dessous, et puisÉgalement bon de savoir...
Pointeur-événements peuvent être désactivées pour un parent de l'élément (probablement transparent div) et encore être activée pour les éléments enfants.
Ceci est utile si vous travaillez avec de multiples qui se chevauchent div couches, où vous voulez être en mesure cliquez sur les éléments enfants d'un calque. Pour cela, tous les parentalité divs obtenir
pointer-events: none
et cliquez-enfants obtenir pointeur-événements réactivé parpointer-events: all
pointer-events:none
et l'imminence de la descente d'avoir des enfants les nœuds affectés, vous enregistrez le jour 🙂.parent * { pointer-events:all; }
pour les enfants?La raison pour laquelle vous ne recevez pas l'événement est parce que la position absolue de l'élément n'est pas un enfant de l'élément que vous êtes désireux de "clic" (bleu div). La façon la plus propre que je peux penser à est de mettre l'absolu de l'élément enfant de l'un, vous voulez cliqué, mais je suis en supposant que vous ne pouvez pas le faire ou tu n'aurais pas posté cette question ici 🙂
Une autre option serait d'enregistrer un gestionnaire d'événements click pour l'absolu de l'élément et l'appeler le gestionnaire de clic pour le bleu de la div, provoquant à la fois à clignoter.
En raison de la façon dont les événements de la bulle en haut à travers le DOM je ne suis pas sûr qu'il est plus simple de répondre pour vous, mais je suis très curieux de savoir si quelqu'un d'autre a des trucs que je ne sais pas!
Il y a une version javascript disponibles manuellement les redirections des événements à partir d'un div à l'autre.
Je l'ai nettoyé, et en a fait un plugin jQuery.
Voici le dépôt Github:
https://github.com/BaronVonSmeaton/jquery.forwardevents
Malheureusement, le but je l'utilise pour - superposition d'un masque sur Google Maps n'a pas de capture, cliquez et faites glisser les événements, et le curseur de la souris ne change pas qui dégrade l'expérience utilisateur assez que j'ai juste décidé de cacher le masque de sous IE et Opera - les deux navigateurs qui ne soutien à des événements de pointeur.
Si vous connaissez les éléments qui doivent les événements de la souris, et si votre superposition est transparent, vous pouvez simplement mettre le z-index de quelque chose de plus élevé que la superposition. Tous les événements doivent bien sûr, le travail dans ce cas sur tous les navigateurs.