Modèle de boîtes

Auteur :
  • François Brucker

Modèle de Boites positionnement et propriétés css.

Chaque balise html est une boite qu'il faut représenter à l'écran. Cette représentation est de cette forme :

modèle

Le contenu de la boîte pouvant — bien sûr — être d'autres boites (les enfants de la balise).

La représentation graphique de la boite est contrôlé par de nombreuses propriétés css, que nous allons passer en revue.

Nous utiliserons ce code html pour nos expérimentations :

<!doctype html>
<html lang="fr">
  <head>
    <meta charset="utf-8">
    <title>Modèle de boîte</title>
    <style>
    </style>
  </head>
  <body>
    <h1>Bonjour Monde !</h1>
    <h2>et univers.</h2>
    <p>
      Lorem ipsum dolor sit amet, <strong>consectetur</strong> 
      adipiscing elit. Vivamus dolor lacus, maximus non arcu sit amet,
      feugiat condimentum libero. Proin suscipit, nunc ut aliquet
       pretium, diam enim rutrum justo, at ornare magna massa non 
       ligula. Vivamus facilisis tincidunt leo, sit amet rutrum dolor 
       fringilla sed. Donec dapibus nulla nec fermentum aliquam. Sed 
       vestibulum felis in ornare eleifend.
    </p>
    <p>
      Vestibulum ante ipsum primis in <em>faucibus</em> orci luctus et
      ultrices posuere cubilia curae; Ut mattis ornare posuere. Quisque elit
      neque, lacinia ac vestibulum a, lobortis ac felis. Nunc eget accumsan
      lorem, id interdum sem. Curabitur facilisis, arcu dictum lacinia
      scelerisque, ante augue varius lorem, id blandit felis mi a mi. Mauris
      lectus odio, rutrum sed gravida vel, ultrices eget mi.
    </p>
  </body>
</html>

Créer un fichier boites.html qui contient le code html précédent et ouvrez le avec chrome.

Les outils de développement vous permettent de visualiser la boîte associée à chaque élément :

modèle

Affichage : balise display

La propriété display est la plus importante, puisqu'elle détermine si et comment vont être représentés les balises.

Remplacez le style du fichier boites.html par :

    <style>
      strong {
        display: none;
      }
    </style>

rechargez le fichier et voyez comment les éléments <strong></strong> ont disparu.

Notez que si le display est placé à none, l'élément est tout simplement ignoré. Ce n'est pas identique à : visibility: hidden; qui ne fait que cacher l'élément (sa place est réservée). Testez la différence !

Il existe de nombreuses valeurs possibles à la propriété display. Nous allons en présenter trois ici.

display: block

Comme les éléments <p></p> ou encore <h1></h1>.

Les éléments de display block commencent en-dessous de la boîte précédente et prennent, par défaut la largeur de la fenêtre.

Leur hauteur est par défaut la hauteur nécessaire pour représenter son contenu.

Les éléments de display block, se suivent les uns en dessous des autres.

Utilisez les outils de développement pour voir comment les éléments <p></p> s'agencent les uns en dessous des autres.

Changez le display des éléments <strong></strong> à block et observez le résultat.

display: inline

Les éléments de display inline commencent à la suite de l'élément inline précédent et n'ont pas de largeur (width) ni de hauteur height).

Les éléments de display inline, se suivent les uns à côté des autres.

Changez le display des éléments <h1></h1> et <h2></h2> à inline et observez le résultat.

Pourquoi ne se passe-t-il rien si on ne change qu'un des deux éléments à inline

solution

Car un élément de display block commence toujours au bord et prend toute la place. Il ne peux donc rien y avoir avant ni après.

display: inline-block

Les éléments de display inline-block commencent à la suite de l'élément inline ou inline-block précédent.

Les éléments de display inline, se suivent les uns à côté des autres.

Les éléments de display inline-block ont une taille, un padding et une marge.

Voyez les différences de représentation en supprimant ou pas la propriété display: inline-block; du style suivant :

    <style>
      strong {
        padding: 100px;
        margin: 100px;
        border: 1px solid;
        display: inline-block;
      }
    </style>

width et height

Les propriétés min-width, max-width, min-height et max-height permettent de garder de la flexibilité dans la taille des boîtes tout en contrôlant le design.

Attention aux effets de bord, si l'on donne une hauteur trop petite pour contenir l'élément, il va déborder. On peut utiliser la propriété overflow pour le gérer.

Choisissez une hauteur trop petite pour contenir les paragraphes et regardez les déborder.

Utilisez ensuite la propriété overflow: hidden; pour cachez le surplus.

border

Il existe plein de propriétés css qui gèrent le bord. Elles commencent toutes par border-. Elles peuvent être (presque) toutes agrégées dans la propriété border

On peut faire des choses assez jolies en utilisant border-radius

margin

Si deux éléments de display block se suivent, la marge entre les deux block sera du maximum des deux marge et non la somme. C'est ce que l'on appelle : fusion des marges.

Les marges hautes et basses des éléments de display inline ne sont pas prises en compte.

Un cas classique d'utilisation des marges est pour les images. L'élément <img></img> sont normalement de display inline. Si l'on veut centrer une image, la solution habituelle est de placer comme style :

    <style>
      img {
        display: block;
        margin: auto;
      }
    </style>

Essayez de centrer une image.

Vous pourrez par exemple utiliser cette image : <img src="https://i-mom.unimedias.fr/2020/09/16/dragon-ball-tortue-geniale.jpg"/>

padding

Les paddings haut et bas des éléments de display inline ne sont pas prises en compte. Mais ce padding existe. On le voit par exemple lorsque l'on ajoute un bord.

Mettez le style ci-après et voyez comment le bord est influencé par le padding, bien que ce dernier ne soit pas pris en compte dans la représentation de la boite.

    <style>
      strong {
        padding: 100px;
        border: 1px solid;
      }
    </style>