Cada elemento tem um comportamento display padrão que controla como ele flui no layout.
<div>, <p>, <h1>, <section>, <ul>.<span>, <a>, <strong>, <em>.<p>This is a <strong>bold</strong> word inside a paragraph.</p>
<!-- <strong> stays inline; the two <div>s below stack vertically -->
<div>Block one</div>
<div>Block two</div>
span { width: 200px; height: 50px; } /* ❌ ignored — span is inline */
Definir width/height em um elemento inline não faz nada. A solução é alterar seu display:
span { display: inline-block; width: 200px; } /* ✅ flows inline BUT respects size */
inline-block fica no fluxo de texto (lado a lado) e respeita width/height/margens — perfeito para itens de navegação, badges ou botões dispostos em uma linha.
block → new line, full width, sizeable
inline → in-line, content width, NOT sizeable (vertically)
inline-block → in-line, content flow, sizeable
Entender o display padrão explica por que seu <span> não aceita uma altura, por que <div>s se empilham e quando mudar para inline-block, flex ou grid.
É a base de como os elementos se organizam antes de você aplicar qualquer sistema de layout.