Hugo Colicchia Designer UI · Intégrateur Web

Recherche stage - janvier et février 2027

Japan.

Une maquette Figma de cinq sections à faire tenir en HTML et CSS : un hero pleine largeur, une grille de circuits, une galerie de huit destinations, un bloc de services et une inscription à la newsletter. Aucun framework, aucune ligne de JavaScript.

Rôle
Intégration HTML et CSS d'après une maquette Figma
Livrable
1 page, 5 sections, 451 lignes de CSS en 4 fichiers
Outils
Figma, Visual Studio Code
Contexte
Projet de formation - Objectif 3W, juillet 2026
Les huit photographies de destinations utilisées dans la galerie du site Japan., disposées en planche de quatre par deux.

Le brief

Une maquette Figma complète m'est fournie : un site vitrine d'agence de voyage vers le Japon, une seule page, cinq sections. L'exercice ne porte pas sur la conception mais sur la restitution - rendre en code exactement ce que la maquette montre, y compris ce qu'elle ne dit pas.

Deux contraintes posées d'entrée : pas de framework CSS, pas de JavaScript. Tout ce que la maquette suggère d'interactif doit donc être obtenu en CSS seul, ou abandonné.

La question que je me suis posée : qu'est-ce que cette maquette impose vraiment, et où me laisse-t-elle décider ?

Cible et contexte d'usage

Le site s'adresse à quelqu'un qui envisage un voyage sans savoir encore ce qu'il veut y faire. Il ne cherche pas une information précise, il regarde. C'est ce qui explique la structure de la maquette : deux sections consécutives sont des galeries d'images, et le seul appel à l'action fort est en haut de page.

Cette lecture a une conséquence directe sur l'intégration. Une page de consultation, parcourue en faisant défiler, sur laquelle on s'arrête sur des photos : le poids des images et la stabilité de la mise en page pendant leur chargement comptent plus que la rapidité d'accès à un formulaire.

Je n'ai pas mené d'entretiens ni de tests sur ce projet : la maquette était le point de départ imposé. Ce que je décris ici est une lecture argumentée de l'intention du designer, pas une recherche utilisateur.

Lecture de la maquette

Avant d'écrire la première ligne, j'ai relevé ce que la maquette fixe et ce qu'elle laisse ouvert. C'est ce relevé qui décide de la structure du CSS.

Ce que la maquette fixe

  • Une seule famille typographique, Barlow, déclinée en quatre graisses. Une grotesque étroite qui tient les titres en capitales sans devenir illisible en petit corps.
  • Un rouge unique pour toutes les actions, sur des textes en bleu-gris foncé. Aucune couleur secondaire : la maquette ne propose qu'un seul niveau d'appel à l'action.
  • Deux traitements d'image opposés : un panneau blanc translucide posé sur la photo du hero, un voile noir posé sur les vignettes de destination. Dans les deux cas, il s'agit de garantir la lisibilité d'un texte posé sur une photo dont on ne maîtrise pas le contenu.
  • Une galerie de huit destinations en deux rangées, avec des vignettes de largeurs inégales.

Ce qu'elle ne dit pas

  • Rien sur le comportement en mobile. La maquette est en une seule largeur de bureau : les cinq paliers de rupture sont des décisions que j'ai prises, pas des consignes.
  • Rien sur la navigation en petit écran. Le menu à cinq entrées ne tient pas sur une ligne en dessous de 900 pixels - il fallait trancher entre un menu déroulant et un menu plein écran.
  • Rien sur les états. Aucun survol, aucun focus, aucun bouton désactivé n'est dessiné. Tous les états interactifs du site sont des ajouts de ma part.

Structure et découpage

J'ai découpé la page en cinq blocs autonomes, chacun sous forme d'une section avec son propre titre de niveau 2. Les cartes de circuit et les vignettes de destination sont des article : ce sont des contenus qui garderaient leur sens sortis de la page.

Côté CSS, quatre fichiers chargés dans un ordre volontaire - reset, puis color, puis style, puis responsive. Chacun ne surcharge que le précédent, ce qui évite d'avoir à monter la spécificité des sélecteurs pour régler un conflit.

Toutes les couleurs sont sorties dans color.css sous forme de variables CSS, y compris les deux voiles semi-transparents et l'ombre de l'en-tête. Changer l'ambiance du site entier revient à modifier huit lignes.

Schéma du découpage de la page Japan. en cinq blocs, avec le nom de la balise HTML et la technique de mise en page retenue pour chacun.
Le découpage retenu. Grid n'intervient que sur les deux galeries - les circuits en deux colonnes, les destinations en quatre - parce que ce sont les seuls blocs où je dois contrôler les lignes et les colonnes en même temps. Partout ailleurs, les éléments s'alignent sur un seul axe et Flexbox suffit.

Direction artistique

La direction est celle de la maquette. Mon travail a consisté à la relever précisément et à la rendre modifiable, pas à la réinventer.

Palette

  • Rouge

    #E83F43

    Tous les boutons, sans exception

  • Bleu ardoise

    #213442

    Titres et texte courant

  • Bleu nuit

    #000829

    Logo et pied de page

  • Gris fumée

    #4D5D68

    Paragraphes secondaires

  • Gris brume

    #E9EBED

    Fond du champ de la newsletter

Typographie

Titres
Barlow 700 pour le titre de la page et les titres de section. Chargée depuis Google Fonts avec preconnect et display=swap.
Texte courant
Barlow 400, 500 et 600 pour la navigation, les paragraphes et les boutons. Une seule famille sur tout le site, quatre graisses.

Iconographie

Trois pictogrammes seulement, dans la section des services, livrés en SVG. Je les ai gardés en SVG plutôt qu'en PNG : ils restent nets à tous les niveaux de zoom et pèsent moins d'un kilo-octet chacun. Chaque pictogramme est accompagné de son titre, il ne porte jamais l'information seul.

Le résultat

Section « Our trips » : quatre cartes de circuit en grille de deux par deux, chacune avec son titre et son bouton posés en bas de la photo.
Les quatre cartes de circuit. Le titre et le bouton sont poussés en bas de carte quelle que soit la longueur du texte : les boutons restent alignés d'une carte à l'autre, y compris si un libellé passe sur deux lignes.
Galerie de huit destinations en grille, chaque vignette portant le nom du lieu et sa ville sur un voile sombre.
La galerie. Le nom du lieu et la ville sont posés sur un voile noir à 60 % d'opacité : c'est ce qui garantit un contraste suffisant quelle que soit la photo derrière, y compris sur les ciels clairs.
Le site en largeur mobile, côte à côte : à gauche le menu fermé et son icône burger, à droite le menu ouvert avec ses cinq entrées et la croix de fermeture.
Les deux états du menu en petit écran. Il s'ouvre et se ferme sans JavaScript : une case à cocher masquée, un libellé qui sert de bouton, et un sélecteur CSS qui réagit à l'état coché. L'icône passe de trois traits à une croix par la même bascule.

Choix techniques justifiés

Un menu burger sans JavaScript

Une input de type case à cocher, masquée, dont l'état pilote l'affichage de la navigation. Le label qui lui est associé devient le bouton. Résultat : le menu fonctionne au clavier, à la souris et au tactile, et la page ne charge aucun script.

Grid sur les deux galeries, Flexbox partout ailleurs

Les circuits et les destinations sont les deux seuls blocs où je dois maîtriser les lignes et les colonnes en même temps : repeat(2, 1fr) pour l'un, repeat(4, 1fr) pour l'autre. Ailleurs, les éléments s'alignent sur un seul axe, et Flexbox y est plus simple à relire comme à replier en petit écran.

Les couleurs sorties dans un fichier à part

Huit variables dans color.css, y compris les deux voiles semi-transparents. Les valeurs ne sont jamais écrites en dur dans les règles : reteinter le site entier ne demande pas d'ouvrir style.css.

Les transitions conditionnées au réglage système

Les animations ne sont activées que si le système ne demande pas de mouvement réduit. C'est l'inverse de l'approche habituelle, qui anime d'abord et désactive ensuite : ici, une personne sensible au mouvement n'a rien à désactiver.

Bilan

Ce que j'ai appris

  • Une maquette de bureau ne dit rien du mobile. La moitié du travail d'intégration s'est jouée sur des décisions que la maquette ne contenait pas, et c'est là que le travail de designer reprend la main.
  • Sortir les couleurs dans un fichier séparé dès le départ, avant d'écrire une seule règle de mise en page, a supprimé les valeurs en dur. Je n'ai eu aucune couleur à traquer en fin de projet.
  • La contrainte « pas de JavaScript » m'a appris deux ou trois mécanismes CSS que je n'aurais jamais cherchés autrement, à commencer par le pilotage d'un menu par une case à cocher.

Axes d'amélioration

  • Mes points de rupture sont écrits en max-width : le site est donc pensé du grand écran vers le petit. Aujourd'hui je l'écrirais en min-width, en partant du mobile. C'est exactement ce que j'ai appliqué sur ce portfolio.
  • Le texte de remplissage de la maquette est resté tel quel. Un contenu réel aurait fait apparaître des problèmes de longueur que je n'ai pas rencontrés.
  • Les images sont en PNG et non compressées. Sur une page dont l'intérêt principal est photographique, c'est le premier chantier que je reprendrais.
  • Le motif de vignettes de largeurs inégales de la galerie ne se rejoue pas en tablette : à cette largeur, toutes les vignettes deviennent identiques et la maquette y perd son rythme.

Si je reprenais ce projet en conception

Deux choses m'ont gêné en intégrant. La première : le site propose de « planifier son voyage » dès le premier bouton, mais aucune section ne dit combien ça coûte ni comment on réserve - le parcours s'arrête sur une inscription à la newsletter. La seconde : les huit destinations ne sont pas filtrables, alors que les quatre types de circuits présentés juste au-dessus formeraient des filtres évidents.

Je commencerais donc par relier ces deux sections, et par ajouter l'écran qui manque entre l'envie et la réservation.