0

I’m trying to create an EMPTY div that takes up 100% of the viewport and that moves with the viewport (or position: fixed). It also needs to be at top: 0, left 0 of the viewport. This is for a browser extension so I need this div to be added over any page.

The background reason for this is so I can use the div as a full page tooltip that shows the mouse x and y positions and the tooltip follows the mouse.

How can this full page div be achieved? My many attempts have failed to create a div with any height.

I am away from my pc but can add what I’ve tried already soon.

5 Answers5

0

Try this

{
  position: fixed;
  height: 100vh;
  width: 100vw;
}
Super Kai - Kazuya Ito
  • 22,221
  • 10
  • 124
  • 129
  • I have tried this but it positions the div after the page content, and after adding top: 0 it sets itself to 0 width …. Any other ideas? I’ll try it again when I’m at my PC – ab_Dominoble_dev Feb 06 '22 at 09:06
0

Try this

{
position:absolute;
inset:0;
width:100vw;
height:100vh;
}
0

Try this stylesheet and with some JavaScript code will help you to achieve a full page div.

#full-page-div {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: none
}

I have added the extra "overflow: none" because height may get more than browser window's height and we don't need to show the scrollbars.

Now, in the JavaScript code, we need to adjust the div height to the full page height, also need to add a handler to window "resize" event, so as to adjust that full page div height and width.

function ExtFullPageDivAdjust()
{
  let fullPageDiv = document.getElementById("full-page-div");
  fullPageDiv.style.height = Math.max(window.innerHeight, document.querySelector("body").clientHeight) + "px";
  fullPageDiv.style.width = window.innerWidth + "px";
}

ExtFullPageDivAdjust();
window.addEventListener("load", ExtFullPageDivAdjust);
window.addEventListener("resize", ExtFullPageDivAdjust);
0

first add an empty div to body then use this :

{position: fixed;
top: 0;
left: 0;
background: red;
right: 0;
z-index: 999999999;
bottom: 0;}

this pure css code is enough and you dont need any javascript even after resize.

Arefe
  • 1
  • 4
0
.empty-div {
  position: fixed;
  inset: 0;
}

The inset property is a shorthand for top, right, bottom and left which will stretch the div to all corners.

In order to place the div at the very top, over everything else, it's best to insert the div at the very end of the page; just before the closing </body> tag.
To be on the safe side, you can also add z-index: 9999999.

Paul van den Dool
  • 3,020
  • 3
  • 20
  • 44