HTML/CSS: Make a div "invisible" to clicks?

HtmlCssEvents

Html Problem Overview


For various reasons, I need to put a (mostly) transparent <div> over some text. However, this means that the text can't be clicked (eg, to click links or select it). Would it be possible to simply make this div "invisible" to clicks and other mouse events?

For example, the overlay div covers covers the text, but I would like to be able to click/select the text through the 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>

Html Solutions


Solution 1 - Html

It can be done using CSS pointer-events. This property is supported in Firefox 3.6+, Chrome 2+, IE 11+, and Safari 4+. Unfortunately, I don't have knowledge of a cross-browser workaround.

#overlay {
  pointer-events: none;
}

Solution 2 - Html

It can be done by refiring the event after you temporarily hide the overlay.

See the first answer to this question: https://stackoverflow.com/questions/1401658/html-overlay-which-allows-clicks-to-fall-through-to-elements-behind-it

Solution 3 - Html

You can do this by hiding the overlay like this:

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

Solution 4 - Html

Use this jQuery

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

replace "div" with the ID or element

Solution 5 - Html

Alternative for disabling all events(or chick) on a div is unbind() all event that are attached with tags by default

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

or

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDavid WoleverView Question on Stackoverflow
Solution 1 - HtmlIonuț G. StanView Answer on Stackoverflow
Solution 2 - HtmlJoeri SebrechtsView Answer on Stackoverflow
Solution 3 - HtmlDonald DuckView Answer on Stackoverflow
Solution 4 - HtmlDean Van GreunenView Answer on Stackoverflow
Solution 5 - HtmlMuhammad NasirView Answer on Stackoverflow