← La bibliothèque

Vantera

Site d’une page pour un concessionnaire ou un showroom automobile

Template complet Réservé aux membres Ouvrir la démo
Aperçu du template Vantera : un coupé noir lancé sur une route côtière au crépuscule, le titre « Your ride awaits at Vantera showroom » en blanc et teal par-dessus, et une barre de filtres en verre dépoli posée en bas de l’image.

Ce que c’est

Un site vitrine d’une page pour un showroom de voitures de sport et de luxe : héros en pleine image avec barre de recherche, panneau de chiffres, six fiches voiture, quatre étapes d’achat, carrousel d’avis, deux showrooms, quatre articles, deux appels à l’action, pied de page à cinq colonnes. Une seule page, un seul fichier HTML.

Ce qui fait ce site, c’est son héros : une photographie pleine largeur sur laquelle trois couches sont empilées dans une seule propriété CSS — un assombrissement plat de 40 % pour que le blanc tienne, un fondu vers le blanc sur le dernier quart, et la photo. C’est ce fondu qui laisse le panneau sombre des chiffres chevaucher l’image de 140 px sans découpe ni masque.

Le design vient d’un gabarit Webflow pour concessionnaire dont seule la structure a été gardée. Tout le reste a été réécrit : jQuery, le moteur d’animation IX2 et ses 126 événements, les 94 Ko de CSS minifié, le slider maison, le badge de l’éditeur, et les style="opacity:0" posés en ligne sur chaque bloc animé — qu’une politique de sécurité stricte bloque, ce qui donnerait une page blanche.

Le site a été rebaptisé, et pas seulement dans le titre : les cinq marques automobiles réelles qu’il affichait — logos compris — sont devenues cinq marques inventées, et les quatre réseaux sociaux du pied de page aussi. Vingt photographies ont été produites pour ce template.

Ce que tu changes en premier

Les couleurs — neuf lignes

Tout en haut de assets/css/style.css :

--accent:        #31b5a3;  /* remplir : boutons, écussons, étoiles */
--accent-deep:   #1f7a6e;  /* écrire sur du clair, et le survol */
--accent-bright: #62daca;  /* écrire sur une photo, et sur l’encre */
--ink:           #0e1523;  /* panneaux sombres, pied de page, texte */
--cloud:         #f6f6f6;  /* les sections grises */

Une chose à savoir avant d’y toucher : l’accent existe en trois nuances et elles ne sont pas interchangeables. Le teal plein passe à 7,2:1 sur le bleu nuit et disparaît sur du blanc (2,5:1) ; la version foncée fait l’inverse, à 4,8:1 sur le gris clair ; la version éclaircie tient à 10,8:1 sur l’encre et à 7,5:1 sur une photo assombrie. Changer l’une oblige à changer les trois.

Le nom

Cherche « Vantera » dans index.html : le titre, la description, le logo, le héros, le pied de page, l’adresse e-mail. Aucune classe CSS ne contient la marque, donc un rechercher-remplacer ne peut rien casser. Le logo est un pictogramme SVG de 667 octets ; le mot à côté est du texte, dans la police du template.

Les voitures

Une fiche est un <article class="car">. Duplique-le ou supprime-le, la grille se recompose seule — même chose pour un avis et pour un article. Les rapports d’affichage des photos sont figés en CSS par aspect-ratio : 16/9 pour une voiture, 25/18 pour un showroom, 3/2 pour un article. Une image d’un autre rapport est recadrée, pas déformée.

Les tailles

L’échelle typographique est déclarée une fois en haut, puis redéclarée à chacun des trois points de rupture. Un titre n’a donc jamais sa propre media query : tu changes --h2-size et tous les titres de section suivent. Si tu te retrouves à écrire une @media ailleurs dans la feuille, c’est probablement qu’il te manque un jeton.

Les treize effets, et comment ils sont faits

Les réglages ne sont pas estimés à l’œil : ils sont lus dans le magasin ixData du moteur d’animation de Webflow, puis dédupliqués. Le gabarit y déclare 126 événements — un par instance de collection — pour 13 effets distincts.

EffetOrigineIci
Fondu d’entrée (32 blocs)opacité 0 → 1, 1 s, outQuart, seuil 0 %[data-reveal="fade"], mêmes 1 s, seuil déplacé à 15 %
Montée de 50 px, retard 100 msy 50 → 0 + opacité, 0,5 s, outExpodata-reveal-delay="100"
… retard 200 ms (11 blocs)idem, retard 200 msdata-reveal-delay="200"
… retard 300 ms (10 blocs)idem, retard 300 msdata-reveal-delay="300"
… retard 400 ms (9 blocs)idem, retard 400 msdata-reveal-delay="400"
… retard 500 ms (7 blocs)idem, retard 500 msdata-reveal-delay="500"
… retard 600 ms (14 blocs)idem, retard 600 msdata-reveal-delay="600"
Zoom au survol (15 photos)scale 1,05 en 300 ms:hover sur le cadre, mêmes 300 ms, cadre en overflow: hidden
Menu « Pages » — ouverturedisplay, y 10 → 0, opacité, 300 ms, chevron −180°aria-expanded + classe, mêmes 300 ms, même demi-tour
Menu « Pages » — fermetureopacité 1 → 0, y 0 → 10, 300 msla même transition à l’envers, plus deux temporisations au survol
Filtre du héros — ouvertureidem, plus une hauteur 0 → auto<details> natif, classe posée à la trame suivante
Filtre du héros — fermeture300 msidem, à l’envers
Carrousel d’avisslider maison, 500 ms, boucle infiniepiste scroll-snap, deux flèches, position annoncée

Ce qu’il faut savoir

  • Aucune requête externe. Polices auto-hébergées, images locales, zéro CDN. Vérifié en listant les requêtes du chargement, pas supposé.
  • Sans JavaScript, rien n’est caché. L’état masqué de l’apparition au scroll s’écrit sous html.js, une classe posée avant le premier rendu. Vérifié en retirant les balises <script> : 25 titres sur 25, 68 paragraphes sur 68, les six voitures, les six avis, et le menu qui reste déplié.
  • Les filtres et le menu sont natifs. Les trois filtres du héros sont des <details> : ils s’ouvrent au clic et au clavier, script ou pas. Le panneau « Pages » s’ouvre au :focus-within, donc au clavier seul. Le script n’ajoute que l’animation de 300 ms — et il faut qu’il l’ajoute, parce qu’un <details> fermé est retiré du rendu et qu’une @keyframes ne rejouerait jamais après la première ouverture.
  • Le carrousel glisse tout seul. La piste est un conteneur de défilement avec scroll-snap : souris, doigt et flèches du clavier fonctionnent sans une ligne de JavaScript. Les deux boutons, leur état désactivé aux extrémités et la position annoncée en role="status" sont la couche par-dessus.
  • Zéro style et zéro script en ligne. Le template respecte la politique de sécurité stricte du site, vérifiée en servant le dossier avec l’en-tête réel — lu dans le /_headers du projet, pas recopié.
  • Le déclencheur est à 15 % du bas de l’écran, mesuré sur l’écran et non sur l’élément comme dans l’original. Un seuil exprimé en fraction de l’élément ne se déclenche jamais pour un bloc plus haut que la fenêtre — et ici un bloc entre visiblement au lieu d’avoir fini avant d’être vu.
  • Contraste corrigé. L’original écrit en blanc sur son accent vert : 2,6:1, là où un texte de 16 px en demande 4,5. Ici le libellé d’un bouton plein est en bleu nuit, à 7,2:1 sur le même remplissage.
  • Responsive vérifié à 390, 1440 et 2560 px, au chargement comme pendant tout le défilement, sans débordement horizontal.

Ce qui n’est pas parfait

Autant le dire ici plutôt que te le laisser découvrir.

  • Le carrousel ne boucle pas. L’original enchaîne indéfiniment ; ici la piste s’arrête à la sixième fiche et les flèches se désactivent. Une boucle infinie sur un conteneur de défilement natif demande de dupliquer les fiches et de recaler le défilement à chaque tour : beaucoup de code pour six éléments, et une piste qui ne se parcourt plus proprement au clavier.
  • Les filtres ne filtrent pas. Ils s’ouvrent, retiennent la valeur choisie et l’écrivent sur le déclencheur, mais la page est unique : chaque option pointe sur l’ancre de la flotte. Un vrai filtre demande une base de données. Même chose pour la recherche du héros et l’inscription du pied de page.
  • La section « How it works » est plus haute que l’original de 96 à 109 px selon la largeur. C’est assumé : sous 992 px l’original cache son bouton « Get started » et son paragraphe d’introduction. Ils restent ici — c’est la section qui explique comment acheter, et le mobile est la majorité du trafic.
  • Le héros mobile ne montre qu’une partie de la voiture. Le bloc fait 479 × 965, soit un rapport de 0,50 : background-size: cover met l’image à la hauteur de la boîte et rogne les côtés, donc background-position n’y peut rien et c’est le recadrage du fichier qui décide. L’original a exactement la même limite — on n’y voit que le toit.
  • Les six avis sont écrits en dur dans le HTML. Au-delà d’une vingtaine, il faudrait les charger plutôt que les écrire.
  • Les images sont libres de droit : les vingt photographies et les vingt-deux pictogrammes ont été produits pour ce template et se redistribuent sans restriction, sans attribution. Seules les polices gardent leur licence propre — Syne et Space Grotesk sont sous SIL Open Font License, vérifié dans la table name des fichiers livrés.

Prends-le, ouvre-le, casse-le.

Vantera est gratuit. La bibliothèque complète — les autres templates et les composants — est incluse dans l’abonnement, avec la formation.

Accès immédiat · Sans engagement · Annulation en 1 clic