Aller au contenu
Démarrer un projet
Menu

Logos

Le bandeau des clients qui défile, le logo dans sa case, et le nom qui tient lieu de logo.

Le bandeau

Une case par client, sous une étiquette (sauf sur la page Réalisations), sur une rangée qui défile lentement de droite à gauche, en boucle. C’est un carrousel depuis le 12 octobre, à la demande de JB. Sur l’accueil, il suit l’ouverture, juste sous la démonstration des offres, et sa section n’a pas de marge haute ni basse.

Emploi
Les clients qui ont confié un projet, nommés : ceux de V3.logos.ordre, dans leur ordre, puis les cas qui ont l’accord du client et un logo.
Moment
Une fois sous l’ouverture de l’accueil, avec son étiquette ; une fois sous l’en-tête de la page Réalisations, sans étiquette, dans l’ordre du mur et avec ses badges (voir Page Réalisations).
Jamais
Avec un nom qui n’a pas donné son accord. En mouvement quand le lecteur a demandé le mouvement réduit : la rangée s’arrête, et se fait défiler à la main.

Ils nous ont confié leur projet

  • Renault
SpécimenLes 9 cases de l’accueil, dans leur section tr-logos : les 5 de V3.logos.ordre, puis 4 cas avec accord et logo. Le logo à l’encre quand son fichier est dans le dépôt, le nom en Outfit sinon. Survolez la rangée : elle s’arrête.
Appelsrc/components/trame/Logos.astro
<Section classe="tr-logos" titreId="logos-spec">
  <Logos noms={V3.logos.ordre} etiquette={V3.logos.libelle} id="logos-spec" />
</Section>
<!-- completer={false} : la liste noms seule, sans les cas ajoutés. -->
ClasseZoneValeur
.tr-logos > .tr-inla sectionpadding haut et bas à 0 : le cadre touche la ligne de section
h2.tr-etql’étiquetteInter 600 11 px, capitales, .14em, vert profond sur fond pâle, bord vert ; dans .tr-logos : marge 22 px clamp(20px, 3vw, 48px) 16 px
.tr-logos__cadrele cadreun trait pointillé en haut et un en bas (--th, 100 % × 1 px), nets d’un bord à l’autre : le masque est sur la fenêtre, pas sur le cadre ; data-reveal="fade", le bandeau apparaît en fondu ; sur la page Réalisations, juste au-dessus de la grille des cas, le trait du bas tombe et la ligne de cette section le remplace (.tr-logos:has(+ .tr-cases-sec))
.tr-logos__defilela fenêtreflex, overflow hidden ; masque horizontal, transparent aux bords, plein de 6 % à 94 % : les cases s’effacent à gauche et à droite (sans étiquette, le fondu de droite laisse la place au bouton pause : voir la prop etiquette) ; --n, le nombre de cases, posé par le composant
.tr-logos__pisteune pisteune liste flex, sans retrait ni puce ; deux pistes identiques, la seconde aria-hidden, ses images à alt vide : la liste ne se lit qu’une fois
tr-defilele défilementtranslateX de 0 à -100 %, une largeur de piste, en calc(var(--n) × 5 s), linéaire, infini ; les deux pistes glissent ensemble et la seconde prend la place de la première : la boucle ne se voit pas ; 9 cases sur l’accueil, un tour en 45 s
:hover, :focus-withinl’arrêtsur .tr-logos__defile : animation-play-state paused, les deux pistes s’arrêtent ; les cases ne portent ni lien ni tabindex : au clavier et au doigt, c’est le bouton pause qui arrête la rangée
.tr-logos__pausele bouton pausedans .tr-logos__tete, à droite de l’étiquette (sans étiquette, seul au bout du bandeau), 44 × 44 px, encre troisième (encre au survol) ; caché sans script (attribut hidden, ôté par trame.ts, partie 8) et en mouvement réduit ; un clic pose .is-pause sur .tr-logos__cadre (animation-play-state paused), bascule aria-pressed et le libellé « Mettre en pause » / « Relancer le défilement des logos » ; l’icône passe des deux barres au triangle
.tr-logos__piste lila caseclamp(170px, 15vw, 230px) de large, 88 px de haut au moins, padding 12 px 16 px, contenu centré ; un trait pointillé à droite (--tv) ; Outfit 700 clamp(16px, 1.4vw, 20px) / 1.15, -.01em, encre
.tr-logos__nomle nom seulopacité .72, transition 200 ms ; sans transition en mouvement réduit
.tr-logos__piste li:hoverau survolla case prend le fond pâle et le nom ou le logo passe à l’opacité 1, en 200 ms (var(--fast))
mouvement réduitimmobileanimation none ; la piste muette est masquée (display none) ; la fenêtre perd son masque et défile à la main (overflow-x auto)
completerla propvraie par défaut : ajoute aux noms les cas de la collection realisations qui ont accordClient, ne sont pas masqués et ont un logo, dans leur ordre, s’ils n’y sont pas déjà (comparés par slug) ; false : les noms seuls
etiquettela prople titre du bandeau, en h2.tr-etq (V3.logos.libelle sur l’accueil) ; sans elle (page Réalisations), pas de titre : .tr-logos__tete--seul pose le bouton pause au bout du bandeau, et les logos s’effacent avant lui
badgela prople mot du badge (P.realisations.badge, page Réalisations) : un .tr-badge dans le coin haut droit des cases dont le cas a sa page (page, accord du client, pas de masque), qui prennent la classe .tr-logos__cas (position relative) ; sans elle (l’accueil), aucun badge ; les valeurs du badge sont dans Page Réalisations
chargementla propeager par défaut ; lazy possible, qu’aucune page ne passe : sur l’accueil comme sur la page Réalisations, le bandeau est près du haut

Le bandeau de la page Réalisations, sans étiquette, dans l’ordre du mur et avec ses badges : voir Page Réalisations.

Le fichier, sinon le nom

Le composant cherche public/assets/logos/clients/<slug>.png au moment de la construction (logoClient, dans src/data/logos.ts) : le slug est l’identifiant du cas, ou le nom en minuscules sans accents ni apostrophe. S’il existe, l’image s’affiche avec le nom pour alternative ; sinon le nom, en Outfit, tient lieu de logo, et personne ne confond la case avec un logo absent.

Mes Jardiniers, version encre
mes-jardiniers.png · encre
Mes Jardiniers, version couleur
mes-jardiniers-couleur.webp · couleur
SpécimenLe même logo dans ses deux versions : l’encre, la seule que les pages emploient, et la couleur, produite à part et gardée hors du dépôt (celle-ci est la seule copiée dans public, pour ce spécimen). Les deux sont rognées à leurs bords, sans fond, à 160 px de haut au plus.
public/assets/logos/clients, à la construction
SlugClientÉtatOù il sert
bosco-servicesBosco Servicesaffichébandeau, cartes de l’accueil, carte et mur de la page Réalisations, preuves d’une page d’offre, en-tête et citation de sa page de cas
buildersBuildersaffichébandeau, carte et mur de la page Réalisations, en-tête et citation de sa page de cas ; original de 151 px de haut, à redemander
cathedrale-de-nantesCathédrale de Nantesaffichébandeau, cartes de l’accueil, carte et mur de la page Réalisations, preuves d’une page d’offre, en-tête et citation de sa page de cas
clotilde-davenneClotilde Davenneaffichébandeau, cartes de l’accueil, carte et mur de la page Réalisations, preuves d’une page d’offre, en-tête et citation de sa page de cas
ie-architectureIE Architectureaffichébandeau, cartes de l’accueil, carte et mur de la page Réalisations, preuves d’une page d’offre
la-grande-tableLa Grande Tableaffichébandeau, carte et mur de la page Réalisations, preuves d’une page d’offre, en-tête et citation de sa page de cas ; original de 100 px de haut, à redemander
mes-jardiniersMes Jardiniersaffichébandeau, cartes de l’accueil, carte et mur de la page Réalisations, preuves d’une page d’offre, en-tête et citation de sa page de cas
peppsyPepPsyaffichébandeau, cartes de l’accueil, carte et mur de la page Réalisations, preuves d’une page d’offre, en-tête et citation de sa page de cas

Dans le bandeau, il manque encore : Renault (renault). Leur nom reste en Outfit tant que le fichier n’est pas produit. Un logo reçu sans emplacement (ni cas, ni case du bandeau) n’est pas publié : son original attend dans le dossier projet, sous originaux/sans-emplacement/.

La préparation

QuoiCommentOù
L’originaltel que reçu du client, nommé par le slug, hors du dépôtdossier projet, docs/logos/clients/originaux/
Le scriptnode scripts/logos-clients.mjs <dossier des originaux> [--couleur <dossier>] : l’original est redressé et posé sur blanc ; le fond est ce qui reste sous un taux d’encre de .14 (1 − min(R, V, B)) ; le logo est rogné, mis à 160 px de haut au plus, jamais agrandi ; un fond teinté ou sombre, un fichier illisible, un format inconnu ou un slug en double sont signalés et ignorésscripts/logos-clients.mjs
L’encre<slug>.png, noir sur transparent ; la densité est étalée pour que l’aplat du logo (la médiane des densités d’au moins .5) soit noir plein : même encre pour tous les logos, quelle que soit leur couleur, sans compter le liseré plus foncé que laissent certaines compressions ; Mes Jardiniers suit la luminance, pour que ses arcs jaunes restent visibles dans le carré vert (LUMINANCE dans le script)public/assets/logos/clients/
La couleur<slug>-couleur.webp, alpha = taux d’encre, couleurs dé-prémultipliées : composée sur blanc, elle rend l’original ; produite seulement avec --couleurhors du dépôt, docs/logos/clients/web/ du dossier projet ; aucune page ne l’emploie
L’accordun logo ne se publie qu’avec l’accord du client, comme une photo : les cartes et la page de cas ne le montrent que si accordClient est vraila notice DEPOSER-ICI.md du dossier

Les hauteurs

ClasseZoneValeur
.tr-logos__piste li imgle bandeauclamp(28px, 2.6vw, 40px) de haut × --echelle, largeur auto, 160 px au plus, object-fit contain, opacité .9 (1 au survol, en 200 ms) ; 12 px de padding vertical dans la case : un logo à l’échelle 1.5 (60 px) tient dans les 88 px ; chargement eager, sur les deux pages
--echellele facteur d’un logoECHELLES dans src/data/logos.ts : un logo haut ou un sigle carré paraît petit à hauteur égale ; Cathédrale de Nantes 1.5, IE Architecture 1.35, La Grande Table 1.3, Bosco 1.25, Builders 0.9 (très large et très gras), les autres 1 ; posé en style sur l’image, lu par chaque règle de hauteur de ce tableau
.tr-cas__logola carte de cas22 px de haut × --echelle, 96 px au plus, à droite de l’étiquette dans .tr-cas__tete (34 px de haut au moins, pour aligner les titres d’une rangée ; passe à la ligne si l’étiquette est longue) ; alt vide, le titre porte déjà le nom ; lazy ; c’est la carte Cas de l’accueil et des pages d’offre
.tr-cc__logola carte d’un cas, page Réalisations30 px de haut × --echelle, 58 % de la tête et 170 px au plus, calé à gauche ; alt : le nom du client, qui nomme aussi le lien de la carte ; eager pour les deux premières cartes, lazy ensuite
.tr-murl__corps imgle mur des clients, page Réalisationsclamp(26px, 2.2vw, 32px) × --echelle, 130 px au plus, opacité .9 (1 au survol d’une case qui mène au cas) ; alt : le nom du client ; lazy
.tr-page__logol’en-tête de la page de cas36 px de haut × --echelle (45 px pour Bosco), 200 px au plus, opacité .9, entre le fil d’Ariane et le titre (19 px au-dessus, 18 px dessous), dans un span.tr-page__marque qui porte l’apparition ; alt vide
.tr-citation__logola citation de la page de cas24 px de haut × --echelle, 150 px au plus, opacité .9 ; alt vide tant que la citation est en réserve, le nom du client quand elle est signée
.tr-dire__logo--imgle mur de citations28 px de haut × --echelle, 132 px au plus, opacité .85, à la place de la réserve quand la fiche du verbatim nomme un client (champ client, null aujourd’hui) ; un client nommé sans fichier s’écrit en toutes lettres (.tr-dire__logo--nom) ; la tête de carte fait 42 px dans tous les cas

L’ordre

V3.logos.ordre range les entreprises à taille de PME d’abord, puis les grands noms. C’est le commentaire posé dans accueil-v3.ts : la page parle aux TPE et aux PME, et la première case doit leur ressembler. Les cas que le composant ajoute suivent, dans l’ordre de leur fiche. Sur la page Réalisations, le bandeau prend l’ordre du mur : les cas qui ont leur page, puis les autres clients.

RangNomSource
01Clotilde DavenneV3.logos.ordre ; dans LOGOS (marque.ts)
02BuildersV3.logos.ordre ; dans LOGOS (marque.ts)
03PepPsyV3.logos.ordre ; dans LOGOS (marque.ts)
04Cathédrale de NantesV3.logos.ordre ; dans LOGOS (marque.ts)
05RenaultV3.logos.ordre ; dans LOGOS (marque.ts)
06Bosco Servicesajouté par le composant : un cas avec accord et logo
07La Grande Tableajouté par le composant : un cas avec accord et logo
08Mes Jardiniersajouté par le composant : un cas avec accord et logo
09IE Architectureajouté par le composant : un cas avec accord et logo
À faire
  • Clotilde Davenne
  • Builders
  • PepPsy
  • Cathédrale de Nantes
  • Renault
Les clients à taille de PME d’abord, le nom en Outfit à casse normale : la rangée dit à qui l’agence s’adresse.
À éviter
  • RENAULT
  • CATHÉDRALE DE NANTES
  • PEPPSY
  • CLOTILDE DAVENNE
  • BUILDERS
Les grands noms d’abord et tout en capitales : c’est l’ordre et la casse du bandeau précédent, qui impressionne plus qu’il ne rassure.

Ce qui est écarté

Le bandeau défilant du site précédent (Marquee.astro, encore visible sur l’accueil précédent) : la liste dupliquée par le script, une bande qui glisse en 44 secondes, en boucle, les noms en Inter 600 13 px et en capitales, et une pause au survol.

Le défilement revient le 12 octobre, à la demande de JB, mais pas le Marquee. La liste n’est plus dupliquée par un script : le composant pose deux pistes, et tout le mouvement tient dans la feuille. Les capitales en Inter 13 px laissent la place au logo à l’encre ou au nom en Outfit, chacun dans sa case de la trame. La rangée s’arrête au survol, et ne bouge pas en mouvement réduit ; la feuille prévoit aussi l’arrêt au focus, mais rien dans le bandeau ne le prend. La lumière qui passait d’une case à l’autre, quand la rangée était immobile, est retirée (trame.ts, partie 8).

ClasseSite précédentTrame
.marq__tracktranslateX de 0 à -50 % en 44 s, linéaire, infini ; arrêté en mouvement réduit.tr-logos__piste : deux pistes, translateX de 0 à -100 % en 5 s par case (45 s pour les 9 de l’accueil), linéaire, infini ; immobile en mouvement réduit, et défilable à la main
la copiela liste dupliquée par le script, au chargementla seconde piste posée par le composant, à la construction ; aria-hidden, images à alt vide
.marq__itemInter 600 13 px, .07em, ink-3, capitales par le composantune case de clamp(170px, 15vw, 230px) ; Outfit 700 clamp(16px, 1.4vw, 20px), casse normale, encre à .72 ; ou le logo à l’encre, à .9
.marq:hoverpause du défilementpause au survol (la règle vise aussi le focus, que rien ne prend) ; la case passe au fond pâle, le nom ou le logo à l’opacité 1

RègleUne case par client, le logo à l’encre quand le fichier existe, son nom en Outfit sinon, les PME d’abord ; la rangée défile lentement, s’arrête sous le pointeur, et ne bouge pas en mouvement réduit.