Alle folgenden Boxen sind "div-Elemente" und entsprechen so den "üblichen" Blockelementen wie p, h, ul, li etc. (anders img und a als Inline-elemente!)
Weil Blockelemente einen Zeilenumbruch eingebaut haben, ändert auch eine Begrenzung der Breite mit "width: 20%;" nichts daran, dass sie untereinander angeordnet werden!
Erst die Veränderung der Darstellungsweise (display: inline; also wie ein Inlineelement behandeln) ordnet die Elemente nebeneinander an. Nur wenn der Platz zu knapp wird, wird in die nächste Zeile geschoben. Verkleinere das Browser-Fenster und beobachte den Effekt. margin und padding (oben/unten) führt hierbei zu unschönen Überlagerungseffekten!