Aller au contenu
Démarrer un projet
Menu

Cellules et grilles

La cellule, la grille qui se trace, le rail, et les pages posées dessus.

Section, grille, cellule

Trois briques, et chacune trace sa part. La Section pose la ligne qui traverse toute la fenêtre, et les deux rails de son contenu. La Grille trace sa ligne du haut. Chaque Cellule trace son bas et sa droite. Les lignes restent justes quel que soit le nombre de colonnes.

Emploi
Poser tout contenu sur le plan : une section par sujet, une grille par liste, une cellule par élément.
Moment
Toujours. Rien ne flotte hors d’une section, et toute liste d’éléments semblables est une grille.
Jamais
Une cellule seule hors d’une grille, sauf le formulaire et la tête en cellule. Une grille avec une marge intérieure : elle va jusqu’aux rails.
  • IA et automatisation

    Bosco Services

    Un assistant lit les demandes d’intervention, retrouve le client dans leur logiciel métier, et prépare la fiche et le devis. Une personne valide.

  • E-commerce

    Clotilde Davenne

    La boutique Shopify d’un domaine de Chablis. Cinq appellations, le retrait au domaine, et les règles de la vente de vin prévues dès le départ.

  • Site internet et logiciel métier

    Mes Jardiniers

    Un site où l’on réserve son jardinier en quelques clics, et derrière, le logiciel qui planifie les interventions des équipes terrain.

  • Application mobile

    PepPsy

    L’application de prévention en santé mentale que PepPsy propose aux salariés de ses entreprises clientes. Un baromètre, des contenus choisis selon les scores, un psychologue.

  • Application mobile

    Cathédrale de Nantes

    L’application de visite de la cathédrale, commandée par le diocèse de Nantes. Un parcours guidé en trois langues, les offices, l’actualité et les dons.

  • Site internet

    IE Architecture

    Le premier site d’une agence d’architecture de Laval. Les projets se lisent un par un, en grand, et l’agence publie elle-même ses nouvelles réalisations.

SpécimenUne Grille de classe tr-cas, six Cellules : une colonne, deux dès 600 px, trois dès 1000 px. Les six cas de l’accueil, sans leur vitrine ni leur logo.
Appelsrc/components/trame/Grille.astro
<Section id="realisations" titreId="tr-realisations">
  <Tete variante="ligne" etiquette="Réalisations" titre="Ce qu’on a fait, et pour qui." id="tr-realisations" />
  <Grille classe="tr-cas">
    <Cellule classe="tr-cas__it">
      <Etiquette element="span">Boutique en ligne</Etiquette>
      <h3>Clotilde Davenne</h3>
      <p class="small">La boutique Shopify d’un domaine viticole bourguignon.</p>
    </Cellule>
    {/* cinq autres cellules */}
  </Grille>
</Section>
ClasseZoneValeur
.tr-secla sectionligne du haut sur toute la fenêtre (var(--th), 1 px) ; padding-block 0
.tr-sec > .tr-inle contenulargeur min(100 % moins 2 × 28 px, 1184 px), centré ; un rail vertical de 1 px à chaque bord ; padding clamp(40px, 5vw, 72px) 0
--th, --tvle traitun tiret de 4 px, un pas de 8 px, var(--line) ; horizontal et vertical
.tr-grillela grillegrid sans puces ; ligne du haut ; clip-path inset(0 1px 0 0) cache le dernier trait vertical, confondu avec le rail
.tr-cella cellulepadding clamp(20px, 2.4vw, 28px) ; trait en bas et à droite ; min-width 0
elementla baliseSection : section ; Grille : ul (par défaut), ol ou div ; Cellule : li (par défaut), div, figure ou article
data-lignesla grille se traceposé par Grille (lignes, vrai par défaut) ; voir la rubrique 03
data-staggerles cellules se suiventposé par Grille, 70 ms par défaut, null pour aucun ; chaque enfant [data-reveal] reçoit --d, son rang fois le pas
reveall’apparition d’une cellulevrai : monte de 16 px en apparaissant ; fade : fondu seul, pour une image ou un dessin ; faux : immobile
label, titreIdl’accessibilitéaria-label sur une grille ou une section sans titre ; aria-labelledby sur une section titrée

La cellule pâle

La seule surface colorée que la trame tolère : var(--pale), dans une cellule. Elle porte un dessin, une tête ou la cellule allumée, jamais une section entière.

  • IA et automatisation

    Une IA branchée sur votre métier.

    Des agents reliés à vos outils préparent le travail, vous validez.

  • L’équipe

    La stratégie

    Ce qu’il faut construire, pour qui, et ce que ça doit rapporter.

SpécimenUne cellule pâle en fondu avec l’illustration de l’offre IA (ia-et-automatisation.svg), puis deux cellules de texte : l’offre IA, et un rôle de l’équipe, « La stratégie ».
Appelsrc/components/trame/Cellule.astro
<Grille classe="tr-cas">
  <Cellule pale reveal="fade" muette>
    <Scene nom="ia-et-automatisation" />
  </Cellule>
  <Cellule classe="tr-cas__it">
    <Etiquette element="span">IA et automatisation</Etiquette>
    <h3>Vos devis se préparent pendant que vous travaillez.</h3>
    <p class="small">L’assistant prépare devis et relances, trie vos documents, et vous validez.</p>
  </Cellule>
</Grille>
ClasseZoneValeur
.tr-cel--palela cellule pâlebackground-color var(--pale), soit var(--color-grinn-pale), #F5FAF5
palela propCellule pale ; avec reveal="fade" pour un dessin : fondu seul, sans montée
.tr-ia, .tr-ia__dessinla section IA de l’accueilfond clair depuis le 13 octobre (JB) : la cellule du texte (.tr-ia__texte) sur le blanc, sans aplat ; le dessin dans une cellule pâle et unie (Cellule pale reveal="fade", classe tr-ia__dessin), sans dégradé d’angle, padding clamp(16px, 2vw, 28px), le schéma centré dans sa boîte 4/3 ; jusqu’au 13 octobre, toute la grille était pâle et la cellule du dessin portait le dégradé d’angle ; deux colonnes, 1fr et 1.25fr, dès 900 px
.tr-demo__scenela scène de l’accueiltr-cel tr-cel--pale, padding 0 ; derrière la scène hero v2, pâle et unie (ni dégradé d’angle, ni quadrillage .tr-une__fond, ni cellules vivantes : 13 octobre, à valider par JB) ; sur toute la largeur de la démonstration en 3:2 (2:1 de 620 à 999 px) ; dès 1000 px, au centre, sur les trois rangées
.tr-page__dessinle dessin d’un en-tête de pagetr-cel tr-cel--pale, padding 0, 4/3 ; derrière un schéma v2, pâle et unie (ni dégradé d’angle, ni quadrillage .tr-une__fond, ni cellules vivantes : 13 octobre, à valider par JB) ; sinon le dégradé d’angle, quadrillé par .tr-une__fond (.tr-une__dessin, la variante « cote » du Hero, plus employée, en 4/3 puis 3/2 dès 900 px)
.tr-tete--cella tête en cellulefond var(--pale), quadrillage masqué au centre : voir Têtes de section
.tr-cel--allumela cellule alluméefond var(--pale), min-height 120 px : voir Bandes et cellules allumées
.tr-sceneun dessin dedansune illustration v2 (.tr-scene--v2, SVG à fond transparent) : mix-blend-mode normal, sans filtre ; une ancienne scène peinte (aucune en service depuis le 13 octobre) : multiply, son fond blanc laisse passer le pâle et la trame
.tr-cel--sceneune cellule de dessin seulepadding clamp(16px, 2vw, 28px), le dessin centré, contain, 420 px de haut au plus : marketing-digital sur /suivi/, ia-et-automatisation sur /contact/

La grille qui se trace

Quand une grille entre dans le cadre, sa ligne du haut s’étire, puis chaque cellule trace son bas et sa droite, l’une après l’autre. Sans script, tout est tracé d’emblée. Les six cellules de la première rubrique l’ont fait en arrivant.

ClasseZoneValeur
data-lignesla grille observéetrame.ts la suit ; .is-trace est posé quand 10 % de la grille entrent dans le cadre, avec une marge basse de 8 %
--lle tour de chaque cellule70 ms fois son rang, posé par le script sur chaque enfant de la grille
.js [data-lignes]:not(.is-trace)avantbackground-size 0 % 1px sur la grille ; 0 % 1px et 1px 0 % sur ses cellules
[data-lignes]la ligne du hauttransition background-size 1100 ms var(--ease)
[data-lignes] > .tr-celles cellulestransition background-size 1100 ms var(--ease), retardée de var(--l) ; background-color 380 ms
data-allumeles bandesmême observateur, même .is-trace ; les cellules allumées d’une grille suivent son .is-trace
mouvement réduitsans animationtransitions à none, .is-trace posé d’emblée
sans scriptsans la classe .jsrien n’est caché : la grille est tracée dès le chargement

Les durées de tout ce qui bouge sont rassemblées dans Mouvement.

Jusqu’aux rails

Les cellules vont jusqu’aux rails ; le texte seul garde sa marge. C’est la règle qui fait tenir la page sur son plan : une grille collée aux rails est posée dessus, une grille en retrait flotte.

À faire

L’équipe

  • 5 ans, à Nantes et à Paris
  • Autour de quinze personnes
L’étiquette garde sa marge de 20 à 48 px (.tr-tete) ; la grille touche les deux rails.
À éviter

L’équipe

  • 5 ans, à Nantes et à Paris
  • Autour de quinze personnes
La grille a une marge intérieure : ses traits ne rejoignent plus les rails, et elle flotte sur le plan.
ClasseZoneValeur
.tr-tete, .tr-suitele texte seulpadding-inline clamp(20px, 3vw, 48px)
.tr-note, .tr-prose, .tr-corps--centreles paragraphesmême marge
.tr-cles > divles paires clé et valeurpadding 14 px clamp(20px, 3vw, 48px) : le trait va jusqu’aux rails, le texte garde la marge
.tr-grille, .tr-formles cellulesaucune marge : elles touchent les rails
.tr-joindrele point de contactl’exception : 1100 px au plus, centré ; à pleine largeur, la grille s’arrête à 42 px de chaque rail
.tr-logos .tr-etql’étiquette des logosmargin 22 px clamp(20px, 3vw, 48px) 16 px

Les classes de colonnes

Le nombre de colonnes est l’affaire de la classe passée à la Grille. Une colonne au téléphone, deux ensuite, puis le nombre propre à la section. Les points de rupture sont ceux de grinn.css, en largeur de fenêtre.

ClasseSectionColonnes
.tr-offresles offres1 ; 2 dès 700 px ; 3 dès 1080 px
.tr-casles réalisations1 ; 2 dès 600 px ; 3 dès 1000 px
.tr-engles engagements1 ; 2 dès 600 px ; 4 dès 1000 px
.tr-equipel’équipe1 ; 2 dès 700 px, la photo sur toute la largeur ; 4 dès 1000 px, la photo toujours sur toute la largeur, en 2/1, les quatre rôles en rangée dessous
.tr-faitsles faits (page de l’équipe)1 ; 2 dès 600 px ; var(--n) dès 1000 px, --n le nombre de faits, plus un s’il y a un bouton : 3 sur la page de l’équipe ; margin-top -1 px, collée à la grille du dessus
.tr-suivile suivi1 ; 2 dès 700 px ; var(--n) dès 1000 px, --n le nombre de colonnes posé par Tarifs (4 au plus) : 3 pour le suivi
.tr-diresles citations1 ; 2 dès 700 px, la tête en première rangée ; 3 dès 1000 px, la tête sur deux colonnes et les cases vides visibles
.tr-logos__pisteles logospas une grille depuis le 12 octobre : une rangée flex de cases de clamp(170px, 15vw, 230px), qui défile (voir Logos)
.tr-joindrele point de contact1 ; 2 dès 900 px quand l’agenda existe (.tr-joindre--deux), la tête sur les deux
.tr-etapesles étapes1 ; 2 dès 600 px ; var(--n) dès 1000 px, --n le nombre d’étapes, 4 au plus
.tr-faqles questions1 ; 2 dès 800 px
.tr-chiffresles repères chiffrés1 ; 2 dès 600 px ; var(--n) dès 1000 px, --n le nombre de repères, 4 au plus
.tr-ial’IA1, le texte puis le dessin ; 1fr et 1.25fr dès 900 px
.tr-demola démonstration de l’accueil2, la scène sur les deux ; 3 dès 620 px, la scène sur les trois ; dès 1000 px, 1fr, 2.3fr et 1fr sur trois rangées : la scène au centre sur les trois rangées, les trois premières offres à gauche, les trois suivantes à droite (grid-area posée sur le deuxième au septième enfant)
.tr-formle formulaire2 ; 1 sous 600 px
.sys-sommairece design system1 ; 2 dès 600 px ; 3 dès 1200 px

RègleUne grille va jusqu’aux rails, trace ses lignes à l’arrivée, et ne porte de couleur que dans sa cellule pâle.