float : permet de faire « flotter » un bloc,
soit à droite soit à gauche.
inline-block n'est apparu qu'au milieu des années 2000)float:center)float pour autre chose que son usage prévu,
c'est-à-dire quand on veut faire flotter un élément (typiquement une image ou une figure) sur le côté d'un texte.
position : static, relative, absolute, fixed, sticky static par défaut, l'élément prend sa position normaletop, bottom, left, rightstatic,
et à défaut, par rapport à l'élément racine. ce n'est pas correct, c'est par rapport au bloc englobant initial. mais je ne vais pas rentrer dans les détails. la différence se voit si on utilise bottom. Démo : positionnement absolu dans la pageDémo : positionnement absolu par rapport à un parentfixed : l'élément est également sorti du flux, mais il est positionné par rapport au viewport, c'est-à-dire qu'il n'est pas sensible au scrollz-index (position en profondeur) tutorielLe positionnement permet de faire des choses intéressantes, mais assez spécifiques.
On ne peut pas l'utiliser pour faire une simple mise en page en colonnes, par exemple : cela donne du code complexe, fragile et difficile à maintenir
On évite autant que possible de sortir les éléments du flux normal.
display displayblock, qui est la valeur par défaut des éléments de type bloc (en général, mais pas toujours !),
et inline valeur par défaut des éléments de fluxdisplay:block, l'élément sera considéré comme bloc : il va notamment prendre toute la largeur laissée dans le bloc parentdisplay:inline, l'élément sera considéré comme un élément de flux : ses marges verticales disparaissent, sa hauteur et sa largeur sont ignorées. Rarement utiledisplay:inline-block : mélange des deux, permet de mettre des blocs sur une ligne. Se comporte comme un inline pour la position (pas de saut de ligne), et comme un bloc pour le reste (marges, dimensions)display:none : la boîte et tous ses enfants n'apparaissent pas du tout (comme s'ils n'étaient même pas dans le HTML)list-item, table et table-cell…display:flex et display:grid :
je reviens dessus plus basinline-block comme alternative aux flottantsdisplay:inline-block est arrivé au milieu des années 2000,
il a été accueilli comme une meilleure façon de faire des colonnes que float
float, inline-block n'est pas
non plus conçu pour faire de la mise en page
display: inline-block transforme le bloc en élément inline, c'est-à-dire qu'il se comporte plus ou moins comme un mot… en particulier les espaces dans le HTML autour de l'élément se voient dans le rendu.inline-block, mais pas avec ce genre de bidouille.Les navigateurs modernes implémentent des spécifications plus récentes de CSS, apparues au début des années 2010, et quasiment utilisables en production aujourd'hui
Attention cependant, ça ne fonctionnera pas partout ! Mais si votre page est bien faite, au pire les navigateurs trop anciens afficheront le contenu sans mise en page… (Viser la graceful degradation !)
Les outils modernes de mise en page s'activent avec deux valeurs spéciales de display : flex ou grid
Contrairement aux autres valeurs de display,
elles ne modifient pas le comportement de l'élément en question mais celui de
ses enfants :
en d'autres termes,
elles permettent de mettre en page ce qui est à l'intérieur d'un élément.
display:flex permet d'utiliser le module « Flexbox » de CSS, qui est particulièrement utile pour mettre en page
des suites d'éléments sur plusieurs lignes. On ne l'abordera pas dans ce cours.
display:grid permet d'utiliser le module « Grid Layout » de CSS, qui permet de faire de la mise en page en deux dimensions
avec des grilles CSS.
On voit en TP les bases du fonctionnement des grilles CSS pour créer des colonnes et des rangées et aligner les différents éléments. Les grilles CSS sont beaucoup plus riches que ça, mais on ne peut pas tout voir !