TD 2 - CSS3 : Et la couleur fut !

RGB, Hexa ou Nom ?

Feuilles de styles en cascade

DOM

On considere ce DOM avec 17 noeuds ELEMENT et 7 noeuds TEXT.

Et voici son code


        <body>
          <header>
            <h1>
            Les papous
            </h1>
          </header>

          <main>
            <section>
              <h2>
                Définition
              </h2>
              <p>
                Les <em>papous</em> sont les habitants de Papouasie.
              </p>
            </section>

            <section>
              <h2>
                Classification
              </h2>
              <ui>
                <li>
                  Les papous papa.
                </li>
                <li>
                  Les papous pas papa.
                </li>
              </ui>
            </section>
          </main>

          <footer>
            Site realisé par 
            <i>C. Levi-Strauss</i>
            en partenariat avec
            <i>A. Franquin</i>
            .
          </footer>
        </body>
        

Selecteurs avancés

Voici un code HTML


            <body>
              <h1>Préparatifs pour l'hiver</h1>
              <ul>
                <li>Prévoir :
                  <ul>
                    <li>du <em>pain</em></li>
                    <li>du <em>chocolat</em></li>
                    <li>des <em>oranges</em></li>
                    <li>quelques <em>châtaignes</em></li>
                  </ul>
                </li>
                <li>une bonne <em>couverture</em></li>
              </ul>
            </body>  
        

Il est possble de mettre un fond rouge à « châtaignes » et un fond cyan à « couverture » grace a ce code CSS


            ul li em {
              background-color : red;
            }
            ul li ul li em{
              background-color : white;
            }
            li+li+li+li em {
              background-color : cyan;
            }
        

Et donc on aurait un resultat tel que

DOM

Pseudo-Classes

La difference cruciale entre p:hover et p :hover est que le premier n'est consideré comme une seule classe alors que le deuxieme est consideré comme deux classes

Dans le premier cas si on survole un paragraphe avec la souris la modification du css prendrait place (ce paragraphe en est l'exemple)

Alors que dans l'autre exemple rien se passerait, puisque lorsque le navigateur essayera de trouver la classe :hover qui n'existe pas, il y aura une erreur et la valise sera sautée.

Règles de priorité

Nous considerons le code HTML et CSS suivant


        <body>
        <h1>Ma page</h1>
        <p id="intro" class="important">Ceci est un paragraphe <em>assez remarquable</em>.</p>
        <p class="important">Et que dire de celui-ci ?</p>
        </body>
        
            
        

        * {
            color:brown;
        }
        
        body {
            color:red;
        }
        
        #intro {
            color:violet;
        }
        
        p {
            color:orange;
        }
        
        p.important {
            color:green;
        }
        
        body .important {
            color:blue;
        }
            
        

Dans ce cas le paragraphe de classe important serait de couleur bleu, car c'est la valise css de plus de precision qui agit sur lui (la valise p.important{} est écrite plus tot dans le code donc elle est écrasée par l'autre).

Ensuite le paragrpahe de id intro sera de couleur violet du aux mêmes motifs, sauf pour ce qu'il y a dans la valise em, et le reste sera rouge.