2010-08-21 10 views
72

Pour diverses raisons, je dois mettre un (généralement) transparent <div> sur du texte. Cependant, cela signifie que le texte ne peut pas être cliqué (par exemple, pour cliquer sur des liens ou sélectionnez-le). Serait-il possible de simplement rendre cette div "invisible" aux clics et autres événements de la souris?HTML/CSS: Rendre un div "invisible" aux clics?

Par exemple, le overlay div couvre couvre le texte, mais je voudrais être en mesure de cliquer/sélectionner le texte à travers le overlay div:

<div id="container"> 
    <p>Some text</p> 
    <div id="overlay" style="position: absolute; top: 0; 
          left: 0; width: 100%; height:100%"> 
     ... some content ... 
    </div> 
</div> 
+1

La réponse courte est non. (A été discuté plusieurs fois, mais les dupes sont difficiles à trouver pour cela, ne peuvent pas penser à de bons mots-clés ...) Qu'est-ce que vous avez besoin de la DIV transparente pour? –

+2

Je ne pense pas que ce soit possible. Peut-être que vous parlez des «diverses raisons», c'est-à-dire de ce que vous voulez vraiment accomplir? – davehauser

+1

@Null Je retiendrai le -1 jusqu'à ce que l'OP sache clairement ce qu'il veut faire. –

Répondre

128

Il peut être fait en utilisant le 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 inter-navigateur.

#overlay { 
    pointer-events: none; 
} 
+2

Ah, ça a l'air bien! Maintenant, le seul problème est que je dois faire accepter à certains enfants * des événements de pointeur ... Mais peut-être Je peux comprendre cela.Merci! –

+2

Cool: 'pointer-events: visible' semble que ça va faire * exactement * ce que je veux.Merci! –

+0

Fonctionne dans le chrome! J'adore que c'est possible! –

-1

Alternative pour désactiver tous les événements qui sont attachés avec des balises par défaut

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

ou

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

'jquery' utilise maintenant' off() 'en faveur de' unbind() ', et ne supprime que les gestionnaires, n'empêche pas le div de capturer le clic. – pmoleri

0

tous les événements (ou poussin) sur un div est unbind() Vous pouvez faire ceci en cachant la superposition comme ceci:

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(); 
} 
0

Utilisez cette jQuery

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

remplacer "div" avec l'ID ou élément

Questions connexes