I actually had this problem (before I knew about StackOverflow).
Your code is (mostly) fine.
The problem is the computer doesn't know what to do.
A div is simply a divider. (Pretty sure that div is a abbreviated version of divider).
A divider without anything inside it is empty. Useless.
You need to put something in it to apply color, size, ect.
See the following Stack Snippets®.
As you can see, adding text is a simple way to solve your problem.
.header {
  background-color: #111111;
}
<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="designs.css">
  </head>
  <body>
    <div class="header">
    And look at that. Problem solved.
    </div>
  </body>
</html>
 
 
If you don't want text, add a <br>.
.header {
  background-color: #111111;
}
<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="designs.css">
  </head>
  <body>
    <div class="header">
    <br>
    </div>
  </body>
</html>
 
 
You can even set the size of the div, too!
.header {
  height: 200px;
  width: 50 px;
  background-color: #111111;
}
<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="designs.css">
  </head>
  <body>
    <div class="header">
    Some text here whose div has been set to 200 by 50 px
    </div>
  </body>
</html>