The problem is that by default body has padding.
"Manjuboyz" solution works to an extent but a globally applied style might cause issues in the future.
This snippet will fix it by removing the default body padding:
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style>
        body{
            padding:0;
            margin: 0;
        }
        .background {
          min-height: 100vh;
          width: 100vw;
          position: absolute;
          top: 0;
          z-index: -9999;
          background-color: red;
        }
    </style>
    <script>
    </script>
</head>
<body>
    <div class="background"></div>
</body>
</html>
 
 
If your page is too long however, you will need the position: fixed property, this makes sure that the div will follow the rendered view area on their device by 'fixing' it to the visible view-able screen. W3 has some good examples of it.
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style>
        body{
            padding:0;
            margin: 0;
        }
        .background {
          min-height: 100vh;
          width: 100vw;
          position: fixed;
          top: 0;
          z-index: -9999;
          background-color: red;
        }
    </style>
    <script>
    </script>
</head>
<body>
    <div class="background"></div>
</body>
</html>