SNT Web CSS

Identification

Infoforall

7 - CSS pour la gestion de la forme


Depuis deux activités, nous travaillons sur le langage HTML :

Logo Html5

Nous avons vu comment est structurée une page HTML, à savoir

  • Une unique balise <html> qui contient... toutes les autres.
  • Une unique balise <head> qui contient les informations non visuelles qu'on veut transmettre au navigateur.
  • Une unique balise <body> qui contient tous les contenus qu'on veut voir apparaître à l'écran et qui contient notamment 
    • du texte avec des balises <p>, <h1>... ,
    • des liens avec des balises <a>
    • et des images avec des balises <img>

Nous allons voir ici comment améliorer l'apparence de nos pages en utilisant, en complément du HTML, un autre langage nommé CSS.

Logo Html5

  questions 08-11-13-projet

1 - Effet du CSS

Important : si vous êtes sur une machine sous Windows, pensez à aller dans affichage et demander d'afficher les extensions de fichier.

01 ✔° Ouvrir la page suivante : http://www.csszengarden.com/tr/francais/.

Utiliser trois des designs proposés dans les menus pour constater qu'on ne change que l'apparence : le texte reste identique mais la présentation change. Attention, la position des menus des designs changent aussi parfois. Il faut alors faire défiler la page pour le retrouver.

1.1 Principe du CSS : style de présentation

Nous obtenons une page contenant du texte et des menus permettant de changer l'apparence de la page, à savoir :

  • l'apparence du contenu,
  • la disposition du contenu

Le code à l'intérieur de l'élément <body> reste identique sur toutes ces pages si différentes !

On dit qu'on a changé le style de présentation (la forme) mais pas le fond (le contenu lui-même).

Nous allons voir dans cette activité :

  • qu'on fixe le contenu (le fond) via un fichier HTML
  • qu'on fixe l'apparence (la forme) via un fichier CSS

La seule différence entre les codes-source de ces différentes pages ? Une seule ligne située dans la balise head ! Elle indique la référence d'un lien à suivre (link en anglais) pour trouver le fameux fichier CSS :

<link rel="stylesheet" media="screen" href="/217/217.css?v=8may2013">
<link rel="stylesheet" media="screen" href="/216/216.css?v=8may2013">
<link rel="stylesheet" media="screen" href="/221/221.css?v=8may2013">

Les fichiers d'extension .css sont des feuilles de style ("stylesheet") : il s'agit de fichiers qui contiennent des indications permettant au navigateur de savoir comment et où le concepteur de la page désire afficher le contenu des balises HTML.

Comment ça fonctionne ?

Pour le savoir nous allons réaliser un site moins complexe à comprendre que JardinZen.

2 - Création d'un fichier CSS

02 ✔° Créer un nouveau répertoire nommé sntcss. Nous allons y placer les fichiers de cette activité.

03 ✔° Télécharger les 6 fichiers suivants (à l'aide d'un clic-droit sur leurs noms et enregistrer la cible du lien sous) et les placer dans le répertoire sntcss :

Vous devriez obtenir la structure ci-dessus sur votre ordinateur.

Questions :

  1. combien de fichier(s)-HTML trouve-t-on dans ce dossier ?
  2. combien de fichier(s)-CSS ?
  3. combien de fichier(s)-images ?

...CORRECTION...

3 fichiers HTML, un ficher CSS et 2 fichiers-images.

04° En regardant la disposition des différents fichiers, pourquoi les 3 fichiers HTML peuvent-ils localiser le fichier CSS en utilisant simplement une adresse RELATIVE du type href="mes_gouts.css".

...CORRECTION...

Tout simplement car ils sont situés dans le même répertoire.

📁 sntcss

📄 index.html

📄 liens_html.html

📄 liens_perso.html

📄 mes_gouts.css

🖼 html.png

🖼 python.jpg

(Rappel) 2.1 Adresses relatives et liens internes

Définition
Une adresse relative est une adresse qui permet de localiser une ressource en partant de la ressource actuelle.
Une adresse relative ne commence
  • ni par le nom d'un serveur ;
  • ni par le nom d'un ordinateur ;
  • ni par le nom d'un disque dur ;
  • ni par un slash.
Application au Web

Imaginons que vous ayez deux pages HTML enregistrées dans le répertoire nommé PAGES_WEB.

📁 PAGES_WEB

📄 page_1.html

📄 page_2.html

Pour créer des liens entre les deux pages, on peut utiliser leurs adresses relatives l'une par rapport à l'autre.

Code à placer dans page1.html

1
<p>Liens perso : <a href="page_2.html">Perso</a></p>

Cela veut dire : cherche dans le répertoire du fichier actuel (page1.html), un fichier qui se nomme page2.html.

Code à placer dans page2.html

1
<p>Liens perso : <a href="page_1.html">Perso</a></p>

Cela veut dire : cherche dans le répertoire du fichier actuel (page2.html), un fichier qui se nomme page1.html.

(Rappel) 2.2 Adressage relatif des images

Imaginons trois fichiers (un html et deux images) placés dans le même dossier :

📁 travail

📄 ma_page.html

📄 mon_image.png

📄 mon_autre_image.png

Pour afficher les deux images à l'aide du fichier HTML ma_page.html, il suffit d'utiliser l'adressage relatif puisque les 3 fichiers sont dans le même répertoire :

1
<img src="mon_image.png">
1
<img src="mon_autre_image.png">

Comme on ne donne pas d'indication supplémentaire, cela veut dire qu'on doit chercher l'image dans le même répertoire que le fichier HTML.

05 ✔° Trois actions à réaliser :

  1. Ouvrir vos 3 fichiers HTML dans un navigateur Web de façon à visualiser l'apparence obtenue.
  2. Ensuite, rajoutez cette ligne à l'intérieur des balises <head> des 3 fichiers HTML.
  3. <link rel="stylesheet" href="mes_gouts.css">

    Par exemple :

    1 2 3 4 5 6 7 8 9 10 11 12 13
    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Accueil HTML</title> <link rel="stylesheet" href="mes_gouts.css"> </head> <body> <h1>Accueil</h1> <p>Vers les liens <a href="liens_html.html">HTML</a></p> <p>Vers les liens <a href="liens_perso.html">SNT</a></p> </body> </html>
  4. Sauvegarder chaque fichier
  5. Visualiser les nouvelles apparences obtenues.

Pas de changement dans l'apparence du site ? Pensez à demander de l'aide, ce n'est pas normal !

Moralité : nous avons réussi à créer une unité de ton sur nos trois pages en utilisant un seul fichier commun de configuration graphique : le fichier CSS (pour Cascading Style Sheets ) nommé "mes_gouts.css".

06° Faire bouger la souris sur la page pour tenter de voir s'il y a des animations.

Notre ensemble de fichiers forme un site dit statique.

Question : Statique veut-il dire que le site ne possède pas d'éléments qui bougent ?

...CORRECTION...

Statique fait référence au fait que les codes HTML et CSS sont toujours fournis à l'identique par le serveur HTTP qui les transmet. On ne peut pas enregistrer d'informations envoyées par un utilisateur sur un site statique.

Sur un site dynamique, le serveur peut recevoir des données, les enregistrer, lire des données dans sa propre base de données et renvoyer un code HTML ou CSS différents en fonction de la façon dont il a été programmé.

Comment utiliser le CSS ?

C'est relativement simple à comprendre lorsqu'on a le code sous les yeux.

2.3 Syntaxe du langage CSS

Exemple

En CSS, pour agir sur tous les éléments HTML d'un même type, il faut noter son nom (a par exemple et pas <a> ).

1 2 3 4
a { color:yellow; font-size:x-large; /* ou small, x-small, x-large, medium, ... */ }

Les propriétés seront placées dans un bloc délimité par {...}. On l'indente de façon à rendre le code plus clair.

Ici, on définit donc la façon dont on veut afficher toutes les balises a :

  • "les textes de tous les liens seront écrits en jaune" est formulé ainsi : color:yellow;
  • "les textes de tous les liens sont de très grande taille" est formulé ainsi : font-size:x-large;

Le symbole ':' joue le rôle du symbole '=' et on finit chaque déclaration par le symbole ';'.

07 ✔° Ouvrir le fichier mes_gouts.css dans l'éditeur de texte. Observer le code pour essayer de voir pourquoi le texte des liens est assez grand et en jaune.

En voici un extrait :

1 2 3 4
a { color:yellow; font-size:x-large; /* ou small, x-small, x-large, medium, ... */ }

Dernière remarque : on peut placer des commentaires en utilisant /* puis */. Le texte situé entre les deux sera alors uniquement destiné au lecteur humain du code.

08 ✌° Modifier le code pour que les liens apparaissent dans une autre couleur et avec une taille différente de celle proposée de base dans le fichier CSS.

Vous pourriez ainsi utiliser xx-large, large, medium, small, x-small, xx-small.

...CORRECTION...

1 2 3 4
a { color:orange; font-size:xx-large; /* ou small, x-small, x-large, medium, ... */ }
2.4 CSS sous condition

Le CSS permet également de gérer des conditions d'états.

Par exemple, nous pouvons modifier les apparences lorsqu'on survole une balise. On utilise alors :hover derrière le nom de la balise à gérer de cette façon.

1 2 3 4
a:hover { color:yellow; font-size:x-large; /* ou small, x-small, x-large, medium, ... */ }

Dans ce cas, les modifications ne seront faites qu'après survol du lien par la souris.

09° A votre avis, quelle est la traduction de l'attribut background-color ? Rajouter un attribut background-color au survol des éléments a. Vous pourriez leur définir un fond rouge par exemple.

Attention, les couleurs sont à fournir en anglais.

...CORRECTION...

background-color correspond à la couleur de fond.

1 2 3 4 5
a:hover { color:yellow; background-color:red; font-size:x-large; /* ou small, x-small, x-large, medium, ... */ }

10° La propriété padding permet de définir la place interne que prend ce type de balise. Plus le padding est grand, plus cette balise "gonfle".

Dans le fichier CSS, modifier le padding des paragraphes. Pour l'instant, il vaut 20 pixels. Passer à 50 px par exemple pour visualiser la différence.

Si vous voulez que votre balise prenne plus de place, il faudra donc utiliser cette propriété padding.

11° La propriété margin permet de définir la marge d'écartement entre cette balise est celles sont à proximité.

Dans le fichier CSS, modifier le margin-bottom de l'élément h1 : cela vous permet de définir la distance entre le côté bas(bottom) du titre et les autres balises. Pour l'instant, il vaut 50 pixels. Passer à 150 px par exemple pour visualiser la différence.

Si vous voulez que votre balise soit plus ou moins écartée des autres, il faudra donc utiliser cette propriété margin.

Voilà pour les bases de CSS. C'est pas bien compliqué.

Vous savez maintenant gérer

  • la couleur du texte (avec la propriété color),
  • la couleur du fond (avec la propriété color-background), et
  • la taille de l'écriture (avec la propriété font-size).

Si vous lisez les lignes du fichier CSS fourni, vous pourrez trouver des exemples montrant comment gérer :

  • l'écartement de votre balise avec les autres balises (avec la propriété margin)
    • margin pour les marges tout autour ;
    • margin-top pour la marge supérieure (en haut) ;
    • margin-bottom pour la marge inférieure (en bas) ;
    • margin-left pour la marge à gauche ;
    • margin-right pour la marge à droite ;
  • la place supplémentaire que prend votre balise block (avec la propriété padding)
    • padding pour la place globale ;
    • padding-top pour la place vers le haut ;
    • padding-bottom pour la place vers le bas ;
    • padding-left pour la place vers la gauche ;
    • padding-right pour la place vers la droite ;

3 - Couleurs RGB

En regardant le reste du fichier CSS mes_gouts.css, vous pouvez voir qu'il existe une autre façon de fournir les couleurs en donnant trois composants :

  1. le rouge,
  2. le vert et
  3. le bleu.

Cette façon d'obtenir toutes les autres couleurs à partir de ces trois couleurs de base sera détaillée dans la partie "photographie numérique" du programme de SNT.

3.1 Code RGB couleur HTML en hexadécimal

Principe R G B

On peut définir une couleur à partir des trois intensités

  • Rouge - Vert - Bleu (RVB en français) ou
  • Red - Green - Blue (RGB en anglais).

Dans le fichier CSS, on peut lire que pour h1, on a color:#333333;

#333333 veut dire qu'on a :

  1. une intensité rouge de 33
  2. 33 pour le vert
  3. et 33 pour le bleu.

Votre oeil reçoit un peu de rouge (33), un peu de vert (33) et un peu de bleu(33) en même quantité. Il interprète cela en gris foncé.

Valeurs possibles

De la couleur la moins intense (00) à la plus intense (FF), je vous propose de vous limiter à ceci :

00 < 11 < 22 < 33 < 44 < 55 < 66 < 77 < 88 < 99 < AA < BB < ; CC < DD < EE < FF

L'intensité 00 veut dire : pas de couleur de ce type (pas de rouge par exemple).

L'intensité FF veut dire : intensité maximale pour cette couleur (rouge max par exemple).

Moyen mnémotechnique : F pour "A Fond".

Quelques exemples visuels

Si on veut du  rouge  pur et intense, il suffit d'écrire ceci :

style=background-color:#FF0000;"

On met donc le rouge à FF et les autres à 00.

Si on veut du  vert  pur et intense, il suffit d'écrire ceci :

style=background-color:#00FF00;"

On met donc le vert à FF et les autres à 00.

Si on veut du  bleu  pur et intense, il suffit d'écrire ceci :

style=background-color:#0000FF;"

On met donc le bleu à FF et les autres à 00.

Si on veut du  jaune  pur et intense, il suffit d'écrire ceci :

style=background-color:#FFFF00;"

On met donc rouge et vert à FF et le bleu à 00.

Si on veut du  blanc  pur et intense, il suffit d'écrire ceci :

style=background-color:#FFFFFF;"

On met donc toutes les intensités au maximum hexadécimal.

Si on veut du  noir  pur et intense, il suffit d'écrire ceci :

style=background-color:#000000;"

Exemple final

color:#9900FF;

Cela veut dire : un peu de rouge (66), pas de vert (00) et bleu intense (FF).

On obtient donc du violet qui tend plus vers le bleu que vers le rouge.

12° A votre avis, comment coder

  1. du rouge vif en RGB ?
  2. du rouge plus sombre en RGB ?
  3. du noir en RGB ?
  4. du blanc ?

Faire des essais pour vérifier en modifiant le CSS.

...CORRECTION...

Le rouge vif est codé par #FF0000 ou #F00 de façon simplifiée.

Un rouge plus sombre par une lettre inférieur à F ou par un chiffre. Par exemple, #AA0000 ou #A00 de façon simplifiée.

Un rouge encore plus sombre serait #990000 ou #900 de façon simplifiée.

Le noir est codé par #000000 ou #000 de façon simplifiée.

Le blanc est codé par #FFFFFF ou #FFF de façon simplifiée.

13 ✌° A votre avis, comment coder

  1. du vert vif en RGB ?
  2. du vert plus sombre en RGB ?
  3. du gris en RGB ?

Faire des essais pour vérifier en modifiant le CSS.

Une fois que vous êtes certain, vous pouvez m'appeler pour valider avec une question en plus.

De nombreux sites proposent de visualiser les couleurs obtenues par une association RGB en hexadécimal. Un exemple parmi d'autres : https://htmlcolorcodes.com/fr

4 - Balise div

Imaginons maintenant qu'on veuille reproduire sur la page d'accueil le bloc bleu regroupant plusieurs paragraphes :

Visuel voulu

14° Modifier le CSS pour les balises p pour que la couleur du fond soit bleue (par exemple #0000FF ou blue). Regarder la page d'accueil.

Ca fonctionne bien ou il y a un problème visuellement ?

...CORRECTION...

Et ça ne fonctionne pas. Il reste du gris entre les paragraphes !

Visuel raté

Pour parvenir à englober tous les paragraphes dans du bleu, nous allons utiliser une balise HTML générique de type block (c'est à dire une balise qui provoque un passage à la ligne) : la balise <div>.

Remarque : la balise HTML <div> est une balise-bloc n'ayant aucun sens sémantique. Elle sert simplement de conteneur (ici pour des différents paragraphes). En appliquant une propriété CSS à div, les balises internes (les paragraphes) suivent les mêmes règles CSS que le conteneur si elles n'ont possèdent pas elles-mêmes.

15 ✌° Réaliser les actions suivantes :

  1. Supprimer la couleur de fond des balises p dans le CSS.
  2. Observer le code HTML de liens_html.html : quelles sont les balises qui sont contenues dans la balise div ?
  3. Modifier le code CSS pour imposer un fond bleu aux balises div.
  4. Observer le visuel obtenu pour liens_html.html.
  5. Modifier le code HTML des deux autres fichiers HTML de façon à obtenir cet affichage sur les trois pages : pas de gris entre les paragraphes mais un fond bleu uniforme sous les trois paragraphes.

...CORRECTION...

Il faut rajouter un attribut background-color à div dans le CSS.

Il faut ensuite rajouter des balises div dans les deux fichiers qui n'en ont pas. Par exemple :

1 2 3 4 5 6 7
<body> <h1>Accueil</h1> <div> <p>Vers les liens <a href="liens_html.html">HTML</a></p> <p>Vers les liens <a href="liens_perso.html">SNT</a></p> </div> </body>

16° Piqure de rappel sur les adresses locales : pourquoi a-t-on pu créer des liens en utilisant juste les noms des fichiers HTML de destination ?

Le code HTML :

1 2 3 4 5 6 7
<body> <h1>Accueil</h1> <div> <p>Vers les liens <a href="liens_html.html">HTML</a></p> <p>Vers les liens <a href="liens_perso.html">SNT</a></p> </div> </body>

La structure du site :

📁 sntcss

📄 index.html

📄 liens_html.html

📄 liens_perso.html

📄 mes_gouts.css

🖼 html.png

🖼 python.jpg

...CORRECTION...

Toujours pareil : les fichiers sont dans le même dossier. Il suffit donc de transmettre leurs noms, sans slash au début. Il s'agit d'adresses relatives.

Pour en apprendre plus sur le CSS et tester les modifications en direct, vous pouvez utiliser par exemple le site de W3Schools (interactif) ou OpenClassRooms (en français) ou la partie HTML de infoforall (c'est gratuit)

.

Projet noté ✌° Réaliser un site Web comportant au moins 2 pages HTML en utilisant un éditeur externe comme Notepad++, Atom ou autres.

On devra y trouver au moins deux pages différentes.

Vous pourrez éventuellement réaliser

  • une histoire dont vous êtes le héros comportant au moins une dizaine de pages ;
  • un site décrivant un projet d'orientation (le métier, les études pour y aboutir, pourquoi ce métier est bien à vos yeux...) ;
  • un site décrivant une de vos activités (présentation, quels clubs ou association dans la région, quels concours ou rencontres...) ;
  • un site pour réviser telle ou telle matière (une partie cours, une partie exercice, une partie expliquant les intérêts de cette matière...) ;
  • Voici le barême :

    • Bonne structure du code produit (indentation...) (3 points) ;

    • Des images stockées localement et dimensionnées (3 points) ;
    • Des liens externes (3 points) ;
    • Des liens internes entre vos pages (4 points) ;
    • Un fichier CSS à part (7 points) comportant :
      1. au moins une propriété color ;
      2. au moins une propriété background-color ;
      3. au moins une propriété font-size ;
      4. au moins une propriété margin ;
      5. au moins une propriété padding ;
      6. au moins deux couleurs définies avec la notation hexadécimal #RRGGBB ;
      7. au moins deux éléments div pour imposer du CSS particulier : c'est le seul cas où vous aurez le droit de placer du CSS avec l'attribut style.

    Bon courage et soyez créatif. A part avec div, ne placez pas votre CSS directement dans le HTML avec l'attribut style. Cette façon de faire n'est destiné qu'aux modifications rapides ou à la réalisation d'un premier prototype.

    Si vous voulez apprendre à faire quelque chose, le plus facile est de taper une requête "HTML + le truc à faire" dans un moteur de recherche.

Il existe encore bien des règles à connaître sur le CSS pour obtenir un résultat vraiment adapté à ce qu'on veut faire mais vous avez maintenant déjà pas mal de possibilité d'actions.

Activité publiée le 07 10 2019
Dernière modification : 07 10 2019
Auteur : ows. h.