Exercices TP-3

  1. Bienvenue au TP-3
  2. Révisions
    1. CSS
    2. CSS
    3. Espaces et fins de lignes
    4. Espaces et fins de lignes
    5. head
    6. body
    7. Termes syntaxe CSS
    8. Termes syntaxe CSS
  3. Révisions - trouver les erreurs dans le HTML
    1. Trouver l'erreur
    2. Trouver l'erreur
    3. Trouver l'erreur
    4. Trouver l'erreur
    5. Trouver l'erreur
    6. Trouver l'erreur
    7. Trouver l'erreur
  4. Sélecteurs CSS
    1. Rappel : arbre des éléments HTML
    2. Sélecteur de descendants
    3. Descendants - 1
    4. Descendants - 2
    5. Descendants
    6. Descendants
    7. Descendants
    8. Descendants
  5. Compositions de sélecteurs
    1. Composition
    2. Composition
    3. Composition
    4. Composition
    5. Composition
    6. Composition
  6. Priorité des sélecteurs
    1. Priorités CSS : exercice
    2. Priorités CSS : exercice
    3. Priorités CSS : exercice
    4. Priorités CSS : exercice
    5. Héritage
  7. Float
    1. Float : exercice
    2. Correction:
  8. Flexbox
    1. flexbox1.html
    2. Flexbox (suite)
    3. Largeur des éléments flex
    4. Flexbox fin.
  9. Structure d'une page
    1. Correction
    2. Mise en page, suite
    3. Correction
  10. Premier modèle de page
    1. Page - Étapes
    2. Correction

1. Bienvenue au TP-3

1.1 Bienvenue au TP-3

Pour votre progression, c'est très important de finir le TP précédent avant de commencer celui-ci.

2. Révisions

2.1 Révisions

Dans ces exercices nous allons réviser quelques concepts vus dans les TP précédents.

C'est essentiel que ces concepts révisés vous paraissent simples et que vous répondiez sans hésitation. Si ce n'est pas le cas, prenez le temps de relire la documentation et de refaire les TP précédents. Ca ne vaut pas le coup de faire les TP plus compliqués si vous n'avez pas encore bien assimilé les notions précédentes.

2.2 CSS

Dans une page html on retrouve ceci:
<p>bla bla</p> 
<p id="principal">bli bli</p>
<p>blo blo</p>

Que faut il écrire dans la feuille de style (CSS) pour que le texte "bli bli" soit écrit en rouge sans que "bla bla" et "blo blo" soient changés ?
(répondez en une seule ligne)

2.3 CSS

Que faut-il écrire à la place du "?" pour que le texte "bla bla" apparaisse en bleu

<p ? >bla bla</p>

on suppose qu'on a dans le fichier CSS:

 .important { color: blue; }

2.4 Espaces et fins de lignes

Les espaces et fins de lignes en HTML sont traités de manière particulière qui peut surprendre les débutants.

Sur combien de lignes sera affiché le HTML suivant dans le navigateur:
<p>ceci 
est
un
texte</p>

2.5 Espaces et fins de lignes

Les espaces et fins de lignes en HTML sont traités de manière particulière qui peut surprendre les débutants.

Combien d'espaces seront affichés entre le "b" et le "c"
(on suppose que les "_" sont des espaces)

<p>a_b____c</p>

2.6 head

Parmi les balises suivantes, lesquelles peuvent-être descendantes de la balise <head> ?

2.7 body

Parmi les balises suivantes, lesquelles peuvent-être parentes (au-dessus) de la balise <body> ?

2.8 Termes syntaxe CSS

Une déclaration dans un fichier CSS ressemble à ceci:

X 
{
Y1: Z1;
Y2: Z2;
...
}

Comment s'appelle "X" ? (quel est son nom formel)

2.9 Termes syntaxe CSS

Une déclaration dans un fichier CSS ressemble à ceci:

X 
{
Y1: Z1;
Y2: Z2;
...
}

Comment s'appelle "Y" (Y1,Y2...) ?

3. Révisions - trouver les erreurs dans le HTML

3.1 Révisions - trouver les erreurs dans le HTML

Dans les exercices suivants de révision, il s'agit de trouver des erreurs dans du HTML.
(norme HTML5, syntaxe XML)

3.2 Trouver l'erreur

A quel caractère se trouve la première erreur:

<a href=toto.html>lien</a>
0000000001111111111222222222233333333334444444444
1234567890123456789012345678901234567890123456789

Vous devez compter les caractères depuis le début. Par exemple, si vous pensez que l'erreur est au  « h » de toto.html, la réponse serait « 14 ». Les chiffres en dessous du HTML peuvent vous aider à compter (à lire verticalement).

3.3 Trouver l'erreur

A quel caractère (donnez un numéro) se trouve la première erreur:

<ul><li>ligne1<li>ligne2</ul>
0000000001111111111222222222233333333334444444444
1234567890123456789012345678901234567890123456789

Les chiffres en dessous du HTML peuvent vous aider à compter (à lire verticalement).

3.4 Trouver l'erreur

A quel caractère (donnez un numéro) se trouve la première erreur:

<P>pas <strong>facile</strong> à voir</P>
0000000001111111111222222222233333333334444444444
1234567890123456789012345678901234567890123456789

Les chiffres en dessous du HTML peuvent vous aider à compter (à lire verticalement).


3.5 Trouver l'erreur

A quel caractère (donnez un numéro) se trouve la première erreur:

<p>bla <img src="t.png" alt="t"> bla</p>
0000000001111111111222222222233333333334444444444
1234567890123456789012345678901234567890123456789

3.6 Trouver l'erreur

A quel caractère (donnez un numéro) se trouve la première erreur:

<p>bla<h3>mon titre</h3> bla</p>
0000000001111111111222222222233333333334444444444
1234567890123456789012345678901234567890123456789

3.7 Trouver l'erreur

A quel caractère (donnez un numéro) se trouve la première erreur:

<p id="x">bla</p><div id="x"><p>bli</p></div>
0000000001111111111222222222233333333334444444444
1234567890123456789012345678901234567890123456789

3.8 Trouver l'erreur

Et pour terminer... une dernière plus difficile!

A quel caractère (donnez un numéro) se trouve la première erreur:

<strong>bla <img src="t.png"/> bla</strong>
0000000001111111111222222222233333333334444444444
1234567890123456789012345678901234567890123456789

4. Sélecteurs CSS

4.1 Sélecteurs CSS

Avant de voir de nouveaux sélecteurs, voici quelques rappels:

http://moodle.iutv.univ-paris13.fr/img/web/webs1-cm-3-2-1.png

http://moodle.iutv.univ-paris13.fr/img/web/webs1-tp-1-16.png

http://moodle.iutv.univ-paris13.fr/img/web/webs1-cm-1-17-1.png

4.2 Rappel : arbre des éléments HTML

La notion d'arbre (avec des ancêtres et des descendants) est très utilisée dans les sélecteurs CSS.
Pour comprendre cette notion il faut raisonner sur l'arbre formé par les éléments HTML d'un document.

Voici un exemple d'arbre:

x
Le <a> à gauche est fils (descendant direct) de <h1>
Le <a> à droite est descendant (indirect) de ul.

4.3 Sélecteur de descendants

Un sélecteur CSS sert à dire « je veux appliquer ce style à tels éléments ».

Pour l'instant on a vu

Comment faire pour, par exemple, « appliquer ce style à tous les éléments <a> contenus dans un titre <h1> » ?

r

Prenons un autre exemple:

<ul id="liste1">
<li>abc</li>
<li>def</li>
</ul>

<ul id="liste2">
<li>xyz</li>
<li>rst</li>
</ul>


Supposons qu'on veuille changer uniquement la couleur des "li" de la deuxième liste.
li {color: red;}
ne marche pas, car elle change la couleur des "li" dans les deux listes.

On peut utiliser un sélecteur composé de deux sélecteurs simples:
#liste2 li {color: red;}
L'espace entre "#liste2" et "li" est très important: il veut dire "descendant de".

Donc: "#liste2 li
" veut dire "tous les li qui sont descendants de #liste2


4.4 Descendants - 1

s

Quel(s) élément(s) correspondent au sélecteur suivant?
li a

4.5 Descendants - 2

s
Quel(s) élément(s) correspondent au sélecteur suivant?
ul a

4.6 Descendants

s
Quel(s) élément(s) correspondent au sélecteur suivant?
#grostitre a

4.7 Descendants

s
Quel(s) élément(s) correspondent au sélecteur suivant?
img p

4.8 Descendants

s
Quel(s) élément(s) correspondent au sélecteur suivant?
.auth p img

4.9 Descendants

s
Quel(s) élément(s) correspondent au sélecteur suivant?
#menu .actif

5. Compositions de sélecteurs

5.1 Compositions de sélecteurs

On peut aussi composer des sélecteurs en les accolant. Regardons ça sur un exemple:

<h1 class="actu">Mon titre</h1>
<p class="actu">
<strong class="actu">abc</strong> defg <a href="...">un lien </a>
</p>

Par exemple, imaginons qu'il y ait de nombreux types d'éléments (des "p" des "h1" ...) ayant tous une même classe "actu". On pourrait alors sélectionner uniquement les paragraphes ayant la classe "actu" comme ceci:
p.actu { color: red;}

(remarquez: il n'y a pas d'espace entre "p" et ".actu")

"p.actu" veut dire : les éléments à la fois de type "p" et appartenant à la classe "actu"

et ensuite on pourrait continuer, par exemple en spécifiant une relation de descendance:

p.actu a { color: red;}

qui veut dire : les éléments "a" contenus dans des paragraphes de classe "actu" seront en rouge

Ce genre d'approche est très utilisée en pratique.

r

On peut faire la même chose avec les id:
ul#menu { color: red;}

Comme il n'y a qu'un seul élément avec id="menu", ceci peut paraître redondant. Mais il y a des situations où c'est utile.

5.2 Composition

s
Quel(s) élément(s) correspondent au sélecteur suivant?
a.actif

5.3 Composition

s
Quel(s) élément(s) correspondent au sélecteur suivant?
ul.actif

5.4 Composition

s
Quel(s) élément(s) correspondent au sélecteur suivant?
p.auth

5.5 Composition

s
Quel(s) élément(s) correspondent au sélecteur suivant?
ul#menu

5.6 Composition

s
Quel(s) élément(s) correspondent au sélecteur suivant?
.auth a.externe img

5.7 Composition

s
Quel(s) élément(s) correspondent au sélecteur suivant?
body.auth h2

6. Priorité des sélecteurs

6.1 Priorité des sélecteurs

Dans les exercices suivants nous allons voir comment des règles des style peuvent s'appliquer indirectement à des éléments et ce qu'il se passe lorsque plusieurs règles différentes s'appliquent à un même élément.

r

Pour simplifier :

6.2 Priorités CSS : exercice

HTML:

<p id="intro"> 
Une jolie <a href="page.html" class="externe" id="lienpage">page</a>.
</p>

CSS:

#lienpage { color: red;}
a { color: green;}
.externe { color: blue;}

Quelle est la couleur du mot « page » ?

6.3 Priorités CSS : exercice

HTML:

<p id="intro"> 
Une jolie <a href="page.html" class="externe" id="lienpage">page</a>.
</p>

CSS:

a.externe { color: red;}
a { color: green;}
#intro a { color: blue;}

Quelle est la couleur du mot « page » ?

6.4 Priorités CSS : exercice

HTML:

<p id="intro"> 
Une jolie <a href="page.html" class="externe" id="lienpage">page</a>.
</p>

CSS:

#lienpage { color: red;}
#intro .externe { color: green;}
#intro a { color: blue;}

Quelle est la couleur du mot « page » ?

6.5 Priorités CSS : exercice

HTML:

<p id="intro"> 
Une jolie <a href="page.html" class="externe" id="lienpage">page</a>.
</p>

CSS:

#intro a { color: red;}
a.externe { color: green;}
#intro a .externe { color: blue;}

Quelle est la couleur du mot « page » ?
(attention piège, lisez attentivement)

6.6 Héritage

Certaines propriétés, comme la couleur du texte et la taille des caractères, sont héritées.

Dans cet exemple:

<p> 
Une jolie <strong>page</strong>.
</p>
p { color: green;}

« strong » est aussi en vert. Il a « hérité » la propriété color de son père « p ».
Ce comportement est logique et vous l'avez déjà rencontré en TP.

Essayez cet exemple dans un fichier HTML.
Inspectez avec Firebug l'élément strong.
Vous remarquerez que dans la colonne "style", firebug vous dit "Inherited from p" (ou Herité de p).

7. Float

7.1 Float

Dans les exercices suivants nous allons utiliser les propriétés "float" pour placer des éléments différemment.

r

7.2 Float : exercice

Créez un fichier contenant le HTML ci-dessous,
<div id="contenu">

  <h2>Le chocolat</h2>
  <p>Le chocolat [ʃɔkɔla][1] est un aliment sucré produit à partir de la fève de cacao.<img class="illustration" src="chocolat.png" alt="chocolat"/> Celle-ci est fermentée, torréfiée, broyée jusqu'à former une pâte de cacao liquide dont on extrait la matière grasse appelée beurre de cacao. Le chocolat est constitué du mélange, dans des proportions variables, de pâte de cacao, de beurre de cacao et de sucre ; on y ajoute éventuellement des épices, comme la vanille.</p>

  <aside class="encart">
    <h3>Recette!</h3>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
  </aside>

  <h2>Fèves de cacao</h2>
  <p>Consommé initialement sous forme de boisson épicée en Amérique centrale, le xocoatl, il se démocratise avec la révolution industrielle. Au XXIe siècle, il est consommé sous forme solide (chocolat noir ou au lait) ou liquide (chocolat chaud). <img class="illustration" src="cacao.jpg" alt="feves"/> Le chocolat se retrouve dans de nombreux desserts tels que les confiseries, biscuits, gâteaux, glaces, tartes. Offrir du chocolat, moulé de différentes manières, est devenu traditionnel lors de certaines festivités : œufs, lapins et cloches à Pâques, pièces de monnaie pour Hanoucca et Noël et cœurs pour la Saint-Valentin.</p>

</div>
Ensuite, sans modifier le HTML, écrivez le CSS nécessaire pour obtenir le exactement résultat suivant:
(faites particulièrement attention aux espacements - margin, padding)

Fichiers image:

chocolat.png

r

cacao.jpg

r

Conseils:

  • commencez par régler la largeur du contenu à 30em. (Par "contenu" on entend l'élément ayant l'id "contenu")
  • vérifiez en détail les espacements, en particulier pour l'encart et le texte contenu dans l'encart.

7.3 Correction:

#contenu
{
    width: 30em;
}

.illustration
{
    float: right;
    margin: .5em;
    margin-right: 0;
}

.encart
{
    float: left;
    border: 1px solid black;
    width: 120px;
    padding: .8em;
    margin-right: 1em;
    margin-bottom: 1em;
    font-style: italic;
    color: #005;
}

.encart h3
{
    margin-top: 0;
}

.encart p
{
    margin-bottom: 0;
}

8. Flexbox

8.1 Flexbox

Dans les exercices suivants nous allons utiliser les "flexbox" pour placer des éléments différemment.

C'est en utilisant ces propriétés qu'on pourra construire des mise-en-page plus élaborées.

https://developer.mozilla.org/fr/docs/Web/Guide/CSS/Flexible_boxes


flexbox

8.2 flexbox1.html

Créez un fichier avec le HTML suivant:

<div id="ma-boite">
<div id="element1">Élément 1</div>
<div id="element2">Élément 2</div>
<div id="element3">Élément 3</div>
</div>

et utilisez le CSS suivant :

#ma-boite
{
background-color: #77216F;
}

#ma-boite div
{
background-color: #FF950E;
margin: 1em;
}

Vous devriez obtenir ceci dans votre navigateur:


Pour l'instant, il n'y a rien de spécial: juste des couleurs et un peu d'espace.

8.3 Flexbox (suite)

Par défaut, les div (comme n'importe quel élément block) s'affichent chacun sur toute une ligne, les uns après les autres.

8.4 Largeur des éléments flex

Revenons à l'exemple simple:
<div id="ma-boite">
<div id="element1">Élément 1</div>
<div id="element2">Élément 2</div>
<div id="element3">Élément 3</div>
</div>

CSS  :

#ma-boite
{
background-color: #77216F;
display: flex;
}

#ma-boite div
{
background-color: #FF950E;
margin: 1em;
}

On a vu qu'on pouvait changer la largeur des éléments flex (1,2,3) avec width.
Si on n'utilise pas width, la flexbox essaie d'ajuster la largeur de ses éléments en fonction de leur contenu.
Une propriété intéressante est "flex-grow: 1;"
Elle dit : agrandir cet élément horizontalement autant que possible.
Essayez d'obtenir ceci:



8.5 Flexbox fin.

Les flexbox ont beaucoup d'options. On a juste vu la base.

Pour plus d'informations voir ici:
https://developer.mozilla.org/fr/docs/Web/Guide/CSS/Flexible_boxes

N'hésitez pas à vous amuser ici:
http://the-echoplex.net/flexyboxes/

9. Structure d'une page

9.1 Structure d'une page

Ça y est ! On a tout ce qu'il faut pour construire notre première page complète, avec une entête, une colonne principale, une colonne navigation et un bas de page.

Cette structure de page peut vous servir d'inspiration pour votre projet.

Créez un fichier avec le HTML suivant:

<header id="entete"     ><h2>entête     </h2></header>
<div id="milieu">
<main   id="principal"  ><h2>principal  </h2></main>
<nav    id="navigation" ><h2>navigation </h2></nav>
</div>
<footer id="bas-de-page"><h2>bas de page</h2></footer>

et utilisez le CSS suivant pour démarrer:

body
{
    width: 900px;
}

#entete
{
    background-color: green;
}

#principal
{
    background-color: yellow;
}

#navigation
{
    background-color: red;
}

#bas-de-page
{
    background-color: grey;
}

Le but, dans un premier temps est d'obtenir ceci (en modifiant le CSS, sans modifier le HTML):

Indications:

9.2 Correction

body
{
width: 900px;
}

#entete
{
background-color: green;
/* Ceci force les marges à rester dans la boite */
overflow: hidden;
}

#milieu
{
/* Crée un flexbox: les deux fils (principal et navigation) sont donc affichés horizontalement. */
display: flex;
}

#principal
{
background-color: yellow;
/* Fait grandir cet élément de flexbox horizontalement autant que possible */
flex-grow: 1;
}

#navigation
{
background-color: red;
width: 200px;
}

#bas-de-page
{
background-color: grey;
overflow: hidden;
}

9.3 Mise en page, suite

On va améliorer cette page.

Commençons par le HTML:

On voudrait tout d'abord centrer la page. Pour ça on va ajouter un <div id="exterieur"> tout autour de la page actuelle. En soi, il ne fait rien, mais il nous permettra d'ajuster l'affichage plus tard avec du CSS.

Ensuite on va ajouter un peu de contenu dans « principal » et dans « navigation ».

Voila le résultat en HTML:

<div id="exterieur">
<header id="entete"><h2>entête</h2></header>
<div id="milieu">
<main id="principal">
<h2>principal</h2>
<p>Le chocolat [ʃɔkɔla][1] est un aliment sucré produit à partir de la fève de cacao. Celle-ci est fermentée, torréfiée, broyée jusqu'à former une pâte de cacao liquide dont on extrait la matière grasse appelée beurre de cacao. Le chocolat est constitué du mélange, dans des proportions variables, de pâte de cacao, de beurre de cacao et de sucre ; on y ajoute éventuellement des épices, comme la vanille.</p>
</main>
<nav id="navigation" >
<h2>navigation</h2>
<ul>
<li><a href="...">bla</a></li>
<li><a href="...">bla</a></li>
<li><a href="...">bla</a></li>
</ul>
</nav>
</div>
<footer id="bas-de-page"><h2>bas de page</h2></footer>
</div>

On voudrait obtenir ceci:

Indications:

9.4 Correction

body
{
margin: 0;
}

#exterieur
{
width: 900px;
margin-left: auto;
margin-right: auto;
}

#entete
{
background-color: green;
overflow: hidden;
}

#milieu
{
display: flex;
}

#principal
{
background-color: yellow;
padding: 20px;
flex-grow: 1;
}

#navigation
{
background-color: red;
width: 180px;
padding: 10px;
}

#bas-de-page
{
background-color: grey;
overflow: hidden;
}

10. Premier modèle de page

10.1 Premier modèle de page

Maintenant qu'on sait structurer une page... faisons une page plus jolie.

Attention: ceci est juste un exercice, on reprendra la démarche, étape par étape, avec plus de conseils, au TP-4 pour construire la page d'accueil de votre projet.

On va garder la même structure du HTML qu'à la question précédente.

Le seul changement important est l'ajout du <div id="illustrations">, qui contient trois <div> avec des liens sur des images.

Le reste est identique à la structure de l'exercice précédent. On a juste ajouté un peu de contenu.

Lisez le HTML suivant attentivement et copiez le dans un fichier:

<div id="exterieur">

  <header id="entete"><h1>Mon site à moi</h1></header>
 
  <div id="illustrations">
    <div class="boite" id="boite1">
      <a href="">
        <img width="289" height="175" alt="photo" src="bror.jpg">
      </a>
    </div>
    <div class="boite" id="boite2">
      <a href="">
        <img width="289" height="175" alt="photo" src="nat.jpg">
      </a>
    </div>
    <div class="boite" id="boite3">
      <a href="">
        <img width="289" height="175" alt="photo" src="nas.jpg">
      </a>
    </div>
  </div>
<div id="milieu">
    <main id="principal">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec non diam in neque blandit commodo. Quisque lobortis sollicitudin nisl pulvinar condimentum. Sed est diam, hendrerit id dignissim vel, adipiscing interdum elit. Vivamus a laoreet eros. Pellentesque sollicitudin pretium fermentum. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
      </p>
      <p id="plus"><a href="...">En savoir plus...</a></p>
   </main>

   <nav id="navigation" >
      <ul>
        <li><a href="...">Musique</a></li>
        <li><a href="...">Photos</a></li>
        <li><a href="...">Amis</a></li>
        <li><a href="...">Liens</a></li>
      </ul>
    </nav>
</div>

  <footer id="bas-de-page">
    <p>
      <span>Contact: moi@exemple.org</span>
      <span>Copyright (c) example.org - 2013</span>
      <span>Librement inspiré du <a href="http://freehtml5templates.com/downloads/free/todo/">template « todo »</a></span>
    </p>
  </footer>

</div>

Dans les pages suivantes, on va essayer d'obtenir ceci:


Images:

Enregistrez les images suivantes:

background.png:

bror.jpg:

nat.jpg:

nas.jpg:

Étapes:

A la page suivante on va construire ensemble le CSS, étape par étape, pour obtenir le résultat voulu.

10.2 Page - Étapes

Avec le CSS de l'exercice précédent, votre page devrait s'afficher comme ceci:

C'est à vous d'écrire le CSS simple: espacements, couleurs et autres proprietés CSS courantes.

CSS généré:

Pour le titre de la page, vous pouvez créer le CSS3 nécessaire avec http://www.3dcsstext.com/

Pour le bas de page, vous pouvez créer le dégradé nécessaire ici:
http://www.colorzilla.com/gradient-editor/
Utilisez une transparence/opacité de 50%

Indications particulières

Rappel: on veut obtenir ceci:

10.3 Correction

body
{
/* Par défaut le body à un peu de marge, pour éviter un espace blanc autour de la page, il faut l'enlever */
margin: 0;
background-image: url(background.png);
font-family: sans-serif;
color: #333;
}

a
{
color: #333;
}

#exterieur
{
width: 1000px;
/* Ceci permet de centrer #exterieur au milieu de la page. Ca ne marche que si width est fixé. */
margin-left: auto;
margin-right: auto;
}

#entete
{
/* Forcer les marges du h1 à rester dans la boite. */
overflow: hidden;
padding-top: 20px;
padding-bottom: 50px;
}

#entete h1
{
margin:0;

/* CSS généré par http://www.3dcsstext.com/ */
font-family: Arial, sans-serif;
line-height: 1em;
color: #ffffff;
font-weight:bold;
font-size: 76px;
text-shadow: 0px 0px 0 rgb(174,174,174), 1px 1px 0 rgb(130,130,130), 2px 2px 0 rgb(87,87,87), 3px 3px 2px rgba(0,0,0,0.3), 3px 3px 1px rgba(0,0,0,0.5), 0px 0px 2px rgba(0,0,0,.2);
}


#illustrations
{
/* Crée un flexbox qui va afficher les 3 boites (contenant les images) horizontalement. */
display: flex;
/* Ajoute automatiquement de l'espace entre les 3 boites, pour que celle de droite soit collée à droite */
justify-content: space-between;
}

.boite img
{
border: 3px solid #FFFBF0;
border-radius: 19px;
box-shadow: 0 0 11px black;
}

#milieu
{
/* Crée un flexbox qui va afficher principal et navigation horizontalement. */
display: flex;
/* Ajoute automatiquement de l'espace entre principal et navigation pour que navigation soit collé à droite */
justify-content: space-between;
/* Par défaut les fils d'un flexbox sont étirés verticalement. Le menu s'étire alors... on veut éviter ca */
align-items: flex-start;
margin-top: 60px;
margin-bottom: 60px;
}

#principal
{
width: 660px;
padding: 20px;
background-color: rgba(255,255,255,.5);
}

#navigation
{
width: 180px;
/* Le menu navigation apparaît uniquement grâce à cette grosse ombre */
box-shadow: 0 45px 60px -30px #7D7D7D;
}

#navigation ul
{
padding: 0;
list-style: none;
margin: 0;
}

#navigation li a
{
/* Enleve le souligné des liens (a) */
text-decoration: none;
/* Oblige le liens (a) à occuper tout l'espace */
display: block;
padding: 11px;
border-top : 1px solid #ccc;
font-size: 20px;
}

/* pseudo-classe "first-child" : désigne le premier fils */
#navigation li:first-child a
{
border-top : 1px solid #fafafa;
}

#plus
{
text-align: right;
font-style: italic;
}

/* pseudo-classe "hover" : s'applique uniquement quand la souris passe par-dessus l'élément */
#navigation li a:hover
{
background-color: white;
}

#bas-de-page
{
font-size: 13px;
padding: 12px;
overflow: hidden;
color: #888;

/* Généré par http://www.colorzilla.com/gradient-editor/ */
background: -moz-linear-gradient(top, rgba(204,204,204,0.54) 0%, rgba(204,204,204,0.54) 1%, rgba(238,238,238,0.52) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(204,204,204,0.54)), color-stop(1%,rgba(204,204,204,0.54)), color-stop(100 %,rgba(238,238,238,0.52))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(204,204,204,0.54) 0%,rgba(204,204,204,0.54) 1%,rgba(238,238,238,0.52) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(204,204,204,0.54) 0%,rgba(204,204,204,0.54) 1%,rgba(238,238,238,0.52) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(204,204,204,0.54) 0%,rgba(204,204,204,0.54) 1%,rgba(238,238,238,0.52) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(204,204,204,0.54) 0%,rgba(204,204,204,0.54) 1%,rgba(238,238,238,0.52) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#8acccccc', endColorstr='#85eeeeee',GradientType=0 ); /* IE6-9 */
}

#bas-de-page a
{
color: #888;
}

#bas-de-page p
{
text-align: center;
}

#bas-de-page span
{
margin-right: 10px;
padding-right: 10px;
border-right: 1px solid #888;
}

#bas-de-page span:last-child
{
border: none;
}