Bonsoir,
C'est globalement ça ^^
Div est un élément sémantiquement neutre de type
block (
h1 par exemple est aussi de type
block, mais il n'est pas neutre, il représente un titre de niveau 1).
Dans le même goût,
span est un élément sémantiquement neutre de type
inline (là où
strong est un élément
inline de sémantique "texte important").
Un
inline permet aux éléments de même type de se placer les uns à côté des autres.
Un
block passe à la ligne et prend par défaut toute la largeur disponible. Cet élément peut être redimensionné.
Un
block dans un
inline n'est pas admis par le W3C et les navigateurs ont des interprétations différentes.
Déjà quand tu fais un truc admis par le W3C tu peux avoir des comportements différents, alors si en plus tu fais des choses non admises, je te laisse imaginer le désastre.
Je te conseille donc d'inverser l'utilisation des
div et
span.
Après, rien ne t'empêche d'utiliser en CSS un display: inline; sur un élément de type block, et un display: block; sur un élément de type inline.
La solution miracle est le display placé en "inline-block".
Cela te permet de manipuler des éléments les uns à côté des autres tout en offrant la possibilité de les dimensionner.
Concernant le positionnement.
Par défaut tu as du
relative.
Le positionnement
absolute te permet de sortir du flux un élément (il n'interagit donc plus avec les autres éléments du flux), cet élément se place par rapport au dernier élément positionné. (soit le viewport par défaut).
Le positionnement
fixed a un peu le même comportement que l'absolute, sauf qu'il permet de ne pas faire interagir l'élément avec l'action scroll de la page.
C'est pour résumer... on pourrait avoir des kilomètres d'explications comme ça.
Le meilleur c'est l'expérience et l'expérimentation.
La plupart des intégrateurs sont autodidactes, on apprend difficilement ces choses en école.
Bonne continuation