Maquettage du design
La 1ère étape consiste à faire la maquette de son site, c'est à dire réfléchir à ce qu'on veut créer comme site:
- De quoi va-t-il parler ?
- Avez-vous un thème, un objectif ?
Comme 1er site, vu que les idées ne sont pas toujours au rdv, on peut déjà commencer par créer un site pour se présenter, pour assurer sa présence sur le Web : ce site parlera de nous, il y aura notre CV, nos futures réalisations et pourquoi pas notre blog.
Pour le TP, si on manque d'inspiration (ce qui est mon cas pour cet exercice), on peut aller sur le site https://html5up.net/.
Le contenu qu'on télécharge va juste nous apporter les éléments qui vont m'aider à construire le design, c'est-à-dire les codes couleurs utilisés, les images découpées, ainsi que les polices.
Prochaines étapes:
- construire le squelette HTML de la page
- le mettre en forme et le mettre en page avec CSS
Organiser le contenu en HTML
Pour créer ce squelette, nous allons utiliser différentes balises HTML :
- les balises structurantes de HTML5, que nous connaissons: header, section, nav, etc...
- la balise universelle div quand aucune balise structurante ne convient.
Voici le site de Zozor une fois fini:

Mais pour le moment nous n'en sommes qu'au HTML seul:

On s'aperçoit que tout le contenu de la page est placé dans une grande balise div ayant pour id : bloc_page (on l'appelle aussi parfois main_wrapper en anglais). Cette balise englobe tout le contenu, ce qui va nous permettre de fixer facilement les dimensions de la page et de centrer notre site à l'écran.
Il s'avère qu'en créant le site, on apporte forcément des modifications, comme ici par exemple, l'apport de balises div fut nécessaire pour aider à la réalisation du design.
Alors oui ce n'est pas très beau, mais c'est le CSS qui va faire toute la différence.
Mettre en forme en CSS
Il faut garder à l'esprit qu'on ne pourra pas faire exactement le même design que celui qu'on prend comme exemple, il faut juste essayer de s'en approcher au maximum.
Pour mettre en forme le design de Zozor, on va procéder en plusieurs étapes, dans cet ordre :
- Polices personnalisées.
- Définition des styles principaux de la page (largeur du site, fond, couleur par défaut du texte).
- En-tête et liens de navigation.
- Bannière (représentant le pont de San Francisco).
- Section principale du corps de page, au centre.
- Pied de page (footer).
Polices personnalisées
Pour les besoins du design du site de Zozor, le graphiste a utilisé trois polices sur sa maquette :
- Trebuchet MS (police courante);
- BallparkWeiner (police exotique);
- Day Roman (police exotique).
Voici un générateur de polices, qui permet d'accéder à tous les formats nécessaires avec @font-face.
Puis, dans le fichier CSS on ajoute les codes de polices qu'on a eu via le générateur:
Pour les rendre accessibles, dans l'idéal, il est fortement conseillé de placer les polices dans un dossier polices prévu à cet effet.
Définition des styles principaux
On va commencer par définir une image de fond, une police et une couleur de texte par défaut, et surtout on va dimensionner notre page et la centrer à l'écran.

Avec #bloc_page, le bloc qui englobe toute la page, on a fixé les limites à 900 pixels de large (même s'il vaut mieux utiliser un %). Avec les marges automatiques, le design sera centré.
text-transform +
- uppercase: pour que le texte soit en majuscules
- lowercase: pour que le texte soit en minuscules
En-tête et liens de navigation
On va procéder étape par étape:
- l'en-tête
- les liens de navigation
L'en-tête
Nous créons une distinction entre l'en-tête et le corps de page grâce à une image de fond. Les éléments sont positionnés avec flexbox : il y a plusieurs niveaux d'imbrication, certains sont positionnés verticalement, d'autres horizontalement. Nous personnalisons aussi les polices et les dimensions.
Les liens de navigation
Pour que la liste s'affiche comme on le souhaite, et non en hauteur, on va procéder de cette façon:

On utilise la propriété CSS list-style-type: none; pour retirer les puces de la liste.
Bannière
La bannière du site de Zozor est intéressante car:
- elle comporte des angles arrondis;
- la description est écrite sur un fond légèrement transparent;
- le bouton « Voir l'article » est réalisé en CSS, avec des angles arrondis;
- une ombre vient donner du volume à la bannière.
Voici son code source:
On a décidé:
- d'afficher l'image du pont sous forme d'image de fond dans le bloc div de la bannière.
- de donner une position relative à la bannière, sans en modifier le décalage, pour placer le bouton "Voir l'article" en bas à droite de la bannière.
- pour la légende de la bannière, j'ai choisi d'utiliser la transparence avec la notation RGBa plutôt que opacity car ce dernier aurait rendu tout le contenu du bloc transparent, y compris le bouton « Voir l'article » à l'intérieur.
Et voici le résultat:

Pour faire des dégradés, on peut utiliser:
- une image de fond qu'on répète horizontalement
- linear-gradient (qui est relativement complexe à utiliser)
Section principale du corps de page, au centre
Le corps, au centre de la page, est dans notre cas constitué d'une unique balise section (mais il pourrait y en avoir plusieurs, bien sûr).
Le positionnement du bloc « À propos de l'auteur » se fait grâce à Flexbox. On a réparti la taille des éléments avec la propriété flex, ce qui permet à l'article et au bloc sur le côté d'équilibrer leurs largeurs.
On joue avec les angles arrondis et les ombres, on ajuste un peu les marges et les dimensions du texte, et nous y voilà !
La petite difficulté ici était de réussir à placer la flèche à gauche du bloc aside "À propos de l'auteur" pour donner l'effet d'une bulle.
La technique est la même : on positionne le bloc aside en relatif (sans effectuer de décalage), ce qui nous permet ensuite de positionner l'image de la flèche en absolu par rapport au bloc aside (et non par rapport à la page entière).
En jouant sur le décalage de l'image, on peut la placer avec précision où on veut, au pixel près!

Pied de page
Plus que le pied de page à mettre en forme. Celui-ci est constitué de trois sous-blocs qu'on a matérialisés par des div auxquels on a donné des id pour mieux les repérer. Ces blocs sont positionnés grâce à une Flexbox les uns à côté des autres.
Deux petites particularités à signaler sur le pied de page:
- on a utilisé la fonctionnalité des images de fond multiples de CSS3 qui permet de réaliser le séparateur entre le corps et le pied de page. Il est constitué de trois images : le séparateur, la petite flèche vers le haut et un léger dégradé.
- on a modifié la puce de la liste « Mes amis », en bas à droite, avec la propriété list-style-image qui permet d'utiliser une image personnalisée plutôt que les puces standard.
Pour retrouver les propriétés CSS3, on peut aller sur Mémento des propriétés CSS.

La dernière étape consiste à vérifier sur différents navigateurs si le site fonctionne.
Vérifier la validité
Le W3C propose sur son site web un outil appelé le « Validateur » (« Validator » en anglais), accessible par ce site: validator w3.
Le validateur est une sorte de programme qui va analyser votre code source et vous dire s'il est correctement écrit ou s'il comporte des erreurs que vous devez corriger.
Sur ce site, on peut valider notre page web de trois façons différentes, c'est pour cela qu'il y a trois onglets :
- adresse (URL) ;
- envoi du fichier .html (le plus conseillé);
- copier-coller du code HTML.
Si tout est ok, un message vert s'affichera, dans le cas contraire le message sera rouge, auquel cas il faudra corriger les erreurs présentes dans le code HTML pour éviter les conflits avec d'anciens navigateurs.
Pour éviter les erreurs, voici une liste de conseils:
- Tous vos textes doivent en général être dans des balises de paragraphes. Il est interdit de mettre du texte directement entre les balises "body" "/body" sans l'avoir entouré des fameux "p" "/p". Ceci est aussi valable pour les retours à la ligne "br/", qui doivent être à l'intérieur de paragraphes.
- Toutes vos images doivent comporter un attribut alt qui indique ce que contient l'image. Si, par hasard, votre image est purement décorative (vous ne pouvez pas en trouver de description), vous êtes autorisés à ne rien mettre comme valeur pour l'attribut alt.
- Vos balises doivent être fermées dans l'ordre.
- Si vos liens comportent des &, vous devez les remplacer par le code & amp; (tout attaché) pour éviter toute confusion au navigateur.
- Vérifiez enfin que vous n'avez pas utilisé des balises anciennes et désormais obsolètes en HTML5 (comme le vieux frame, la balise marquee… Le validateur vous dira « Element XXX undefined » (balise inconnue) ou encore « There is no attribute XXX » (attribut inconnu).
Le code final
Et voici à quoi il ressemble au final:

Plus qu'à s'exercer de son côté!!