113 votes

HTML/CSS: Rendre une div "invisible" aux clics?

Pour diverses raisons, j'ai besoin de placer un

(principalement) transparent sur du texte. Cependant, cela signifie que le texte ne peut pas être cliqué (par exemple, pour cliquer sur des liens ou le sélectionner). Serait-il possible de simplement rendre ce div "invisible" aux clics et aux autres événements de la souris?

Par exemple, le overlay div couvre le texte, mais j'aimerais pouvoir cliquer/sélectionner le texte à travers le overlay div:

    Some text

        ... some content ...

1 votes

La réponse courte est non. (Cela a été discuté plusieurs fois, mais il est difficile de trouver des doublons pour cela, je ne trouve pas de bons mots-clés...) De quoi avez-vous besoin du DIV transparent pour?

2 votes

Je ne pense pas que ce soit possible. Peut-être parles-tu des "raisons diverses", c'est-à-dire ce que tu veux vraiment réaliser?

1 votes

@Null Je retiendrais le -1 jusqu'à ce qu'il soit clair ce que l'OP veut faire.

188voto

Ionuț G. Stan Points 62482

Vous pouvez le faire en utilisant CSS pointer-events. Cette propriété est prise en charge dans Firefox 3.6+, Chrome 2+, IE 11+, et Safari 4+. Malheureusement, je n'ai pas connaissance d'une solution de contournement compatible avec tous les navigateurs.

#overlay {
  pointer-events: none;
}

3 votes

Ah, cela semble bien! Maintenant, le seul problème est que je dois faire en sorte que certains des enfants acceptent les événements de pointeur... Mais peut-être que je peux trouver une solution. Merci!

6 votes

Cool: pointer-events: visible semble faire exactement ce que je veux. Merci!

0 votes

Fonctionne sous Chrome! J'adore que cela soit possible!

3voto

Joeri Sebrechts Points 7483

Cela peut être fait en réexcutant l'événement après avoir temporairement masqué le recouvrement.

Voir la première réponse à cette question: Recouvrement HTML qui permet aux clics de passer à travers les éléments situés derrière

0voto

Donald Duck Points 3890

Vous pouvez le faire en cachant le superposition de cette manière :

overlay.onclick = function(){
    window.event.srcElement.style.visibility = "hidden";
    var BottomElement = document.elementFromPoint((navigator.appName.substring(0,3) == "Net") ? e.clientX : window.event.x,(navigator.appName.substring(0,3) == "Net") ? e.clientY : window.event.y);
    window.event.srcElement.style.visibility = "visible";
    BottomElement.click();
}

0voto

Dean Van Greunen Points 775

Utilisez ce jQuery

$("div").click(function(e){e.preventDefault();});

remplacez "div" par l'ID ou l'élément

-1voto

Muhammad Nasir Points 231

Une alternative pour désactiver tous les événements (ou clic) sur une division est de détacher tous les événements qui sont attachés par défaut avec des balises.

  $('#myDivId').unbind();

ou

  $('#myDivId').unbind("click");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X