Por que os pseudo-elementos: before e: after exigem uma propriedade de 'conteúdo'?

Dado o seguinte cenário, por que o seletor: after requer uma propriedade de conteúdo para funcionar?

.test {
    width: 20px;
    height: 20px;
    background: blue;
    position:relative;
}
			
.test:after {
    width: 20px;
    height: 20px;
    background: red;
    display: block;
    position: absolute;
    top: 0px;
    left: 20px;
}
<div class="test"></div>

Observe como você não vê o pseudo elemento até especificar a propriedade de conteúdo:

.test {
    width: 20px;
    height: 20px;
    background: blue;
    position:relative;
}
			
.test:after {
    width: 20px;
    height: 20px;
    background: red;
    display: block;
    position: absolute;
    top: 0px;
    left: 20px;
    content:"hi";
}
<div class="test"></div>

Por que essa é a funcionalidade pretendida? Você poderia pensar que o bloco de exibição forçaria o elemento a aparecer. Curiosamente, você pode realmente ver os estilos dentro de depuradores da web; no entanto, eles não são exibidos na página.

questionAnswers(4)

yourAnswerToTheQuestion