Почему название "Стройка" находится выше блока, для которого прописаны свойства?

Почему название "Стройка" находится выше блока, для которого прописаны свойства? То есть фон блока красный, а название как будто в своем блоке выше и имеет белый цвет фона.

* {
  background-color: #ffffff;
  margin: 0;
  padding: 0;
}

.header {
  background-color: red;
  height: 200px;
  font-size: 1.5em;
}
<!DOCTYPE html>
<html lang="ru">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" type="text/css" href="assets/css/style.css">
  <title>EXAMPLE</title>
</head>

<body>
  <div class="header">
    <h1>Стройка</h1>
  </div>
  </div>
</body>

</html>


Ответы (3 шт):

Автор решения: dmitriy_vlz

Потому что у тебя есть вот такой стиль:

* {
  background-color: #ffffff; //ВСЕМ БЛОКАМ БЕЛЫЙ ФОН, ЕСЛИ НЕ ЗАДАНО ИНОЕ
  margin: 0;
  padding: 0;
}

Убери это и будет счастье)

→ Ссылка
Автор решения: UModeL

Всё нормально, всё на своих местах. Просто селектор * имеет больший приоритет, чем селектор по классу - он и перебивает своим цветом фона:

* {
  /*background-color: #ffffff;*/
  margin: 0;
  padding: 0;
}

.header {
  background-color: red;
  height: 200px;
  font-size: 1.5em;
}
<!DOCTYPE html>
<html lang="ru">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" type="text/css" href="assets/css/style.css">
  <title>EXAMPLE</title>
</head>

<body>
  <div class="header">
    <h1>Стройка</h1>
  </div>
</body>

</html>

→ Ссылка
Автор решения: baggins

Вы указали для всех элементов белый фон:

* {
  background-color: #ffffff;
  margin: 0;
  padding: 0;
}

Поэтому заголовок перекрывает верхнюю часть красной обёртки. В свою очередь оба блока занимают всю ширину экрана.
Уберите белый фон:

* {
  margin: 0;
  padding: 0;
}

→ Ссылка