En CSS sur la plupart ds navigateurs, les divs ont des marges/padding par défaut.
Si tu ne les remets pas explicitement à 0, elle seront là toutes seules.
Pour éviter ce genre de soucis (et tous ceux qui vont déboucher du même principe), charge toujours un fichier reset.css avant d'appeler ta feuille de style principale. Ça permet de remettre toutes les valeurs à zéro et de partir sur une base saine.
Sinon, tu peux utiliser un normalize.css qui, lui, à défaut de réinitialiser les valeurs utiles par défaut, se charge de faire en sorte que toutes aient le même rendu sur tous les navigateurs. Ça peut aussi être une base sympathique à utiliser si tu as peur que le reset soit trop brutal.