Это потому, что *
является наименее определенным селектором c CSS и переопределяется любым другим селектором. Вы должны применять стили к отдельным селекторам
body {
margin: 10px;
padding: 0px;
background-color: #BDDFF9;
}
header {
width: 300px;
background-color: blue;
margin: 0px;
padding: 0px;
}
@media screen and (max-width: 600px) {
body {
margin: 0px;
background-color: #D2D2D2;
}
}
<header>
Text
</header>
Причина, по которой *
не сработал, состоит в том, что к body
добавлены правила, которые более специфичны c, чем *
. Не рекомендуется использовать *
для переопределения стилей. Вот хорошая MDN статья.