Skip to content

Instantly share code, notes, and snippets.

@geraldfullam
Last active August 29, 2015 14:14
Show Gist options
  • Save geraldfullam/141bb89059a07e7facdc to your computer and use it in GitHub Desktop.
Save geraldfullam/141bb89059a07e7facdc to your computer and use it in GitHub Desktop.
Layered Event Listeners
<fieldset>
<legend>Layered Event Listeners</legend>
<div class="box under" id="under"></div>
<div class="box over" id="over"></div>
</fieldset>
var
under = document.getElementById("under"),
over = document.getElementById("over")
;
under.addEventListener('mouseenter', function (e){
$(this).addClass('circle');
});
under.addEventListener('mouseleave', function (e) {
$(this).removeClass('circle');
});
over.addEventListener('mousemove', function (e) {
this.style.visibility = "hidden";
var elem = document.elementFromPoint(e.clientX, e.clientY);
this.style.visibility = "visible";
$(this).addClass('circle');
if(elem.id === under.id) {
under.dispatchEvent(new Event('mouseenter'));
} else {
under.dispatchEvent(new Event('mouseleave'));
};
});
over.addEventListener('mouseleave', function (e) {
$(this).removeClass('circle');
});
html {
font-size: 62.5%;
}
body {
font-size: 1.6rem;
font-family: Helvetica, sans-serif;
}
legend {
text-align: center;
font-weight: bold;
font-size: 3.5rem;
}
fieldset {
position: relative;
border: 1px solid #ccc;
border-radius: 1rem;
padding: 2rem;
}
.box {
position: relative;
margin: 0 auto;
width: 100px;
height: 100px;
transition: border-radius .3s ease;
}
.circle {
border-radius: 50px;
}
.under {
top: 25px;
left: -25px;
background-color: rgba(255, 0, 0, 0.75);
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.75);
}
.over {
top: -25px;
left: 25px;
background-color: rgba(0, 0, 255, 0.75);
box-shadow: 0 1px 8px 1px rgba(0, 0, 0, 0.75);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment