Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

How can we do this? We can set the CSS position style to absolute. Then we can make use of the method getBoundingClientRect to find the co-ordinates of an element we want to move our div to. Then it’s just a bit of simple math to calculate where to move it to.

We can test this out in the Javascript console. First clear the styling and set up up some divs:

document.head.innerHTML ='';
document.body.innerHTML = `
   <div class="MENUitem">Company</div>
   <div class="MENUitem">Product</div>
   <div class="MENUitem">Resources</div>
   <div class="MENUitem">Contact</div>
   <div class="MENUdropdown"></div>`;

Then some basic CSS rules:

.MENUitem{
    display: inline-block;
    border: black solid 1px;
    padding: 5px;
}

MENUdropdown {
    border: black solid 1px;
    height: 140px;
    width: 100px;
}

Then define this helpful little function:

function MENUposition(Parent, Child){
   var Rect = Parent.getBoundingClientRect();
   Child.style.position = 'absolute';
   Child.style.top = (Rect.top + Rect.height + 2) + "px";
   Child.style.left = Rect.left + "px";
}

Get our array of menu items, the dropdown then use the MENUposition command to position the dropdown:

var MENUarray = document.querySelectorAll(".MENUitem");
var Dropdown = document.querySelector(".MENUdropdown");
MENUposition(MENUarray[0], Dropdown);
MENUposition(MENUarray[1], Dropdown);
MENUposition(MENUarray[2], Dropdown);
  • No labels