Un banco di verifica Foundation funzionante con XY Grid, validatori personalizzati Abide, conferma Reveal, impostazioni Sass effettive e codice completo per l’integrazione locale.
Foundation nativo per Sites 6.9.0 CSS/JavaScript con jQuery 3.7.1; regole originali di verifica della stampa. · Riferimento per l’implementazione
02
Riferimento di progettazione del sistema di progettazione sistema di design Foundation
Impostazioni di Foundation per Sites 6.9.0 e CSS predefinito compilato, con jQuery 3.7.1. I nomi con prefisso dollaro sono impostazioni Sass, non proprietà personalizzate CSS del browser. Le regole di stampa e i colori della copertina sono scelte originali dell’esempio.
sistema di design Foundation per siti con un vero runtime
Foundation per siti con un runtime reale
Foundation per siti combina un framework CSS responsive con i plugin JavaScript. Il banco prove usa XY Grid per il layout, Abide per la convalida e Reveal per la finestra di dialogo di revisione. Il runtime compilato viene caricato dopo jQuery 3.7.1 e $(document).foundation() inizializza gli attributi data quando la pagina è pronta.
È diverso da Foundation per email. La pagina usa moduli del browser, convalida JavaScript e una finestra modale: il markup non è un template per email. La versione offline include i file effettivi della versione 6.9.0 e aggiunge un piccolo script originale, invece di riprodurre staticamente componenti solo in apparenza.
Impostazioni Sass e palette predefinita di sistema di design Foundation
Impostazioni Sass e palette predefinita
La tabella di riferimento riporta le impostazioni della configurazione Sass installata. La palette predefinita include primary #1779ba, secondary #767676, success #3adb76, warning #ffae00 e alert #cc4b37. Questi valori definiscono i ruoli cromatici del framework; la copertina calda del libretto è un’opera originale di CSS, con una palette propria.
Le impostazioni precedute dal simbolo del dollaro sono valori di input in fase di compilazione. Non sono proprietà personalizzate di CSS assegnabili nell’attributo style del browser. Per modificare il tema del framework, usa una compilazione Sass; per una modifica specifica dello schermo, aggiungi invece regole CSS ordinarie e ben circoscritte dopo il foglio di stile compilato. L’esempio segue quest’ultimo approccio per il titolo, la spaziatura interna del modulo e lo sfondo.
Geometria predefinita del sistema di design Foundation e gerarchia di lettura locale
Geometria predefinita e gerarchia di lettura locale
Foundation parte da una dimensione del carattere pari al 100% rispetto al browser, un’interlinea del corpo di 1.5 e una famiglia di caratteri Helvetica Neue/Helvetica/Roboto/Arial. Il raggio globale è zero, perciò gli elementi predefiniti hanno spigoli più squadrati rispetto a molti kit di componenti contemporanei. Campi di input, callout e modulo di prova mantengono questo carattere, senza adottare uno stile estraneo con ampi angoli arrotondati.
L’applicazione sceglie un titolo di pagina di 38px con interlinea 1.15, ridotto a 30px sui dispositivi mobili. Il testo introduttivo è di diciotto pixel. L’illustrazione usa lettere in grassetto disposte su più righe e un semplice cerchio per rendere evidente il contesto di stampa, mentre il modulo resta una superficie di lavoro bianca e stabile. Sono scelte locali, elencate integralmente nel file CSS fornito.
Griglia XY Grid e scelta delle gutter nel sistema di design Foundation
Griglia XY e scelta delle gutter
Il contenitore della griglia ospita una riga grid-x grid-margin-x. Le due celle sono medium-7 e medium-5, che ripartiscono dodici colonne tra il modulo e l’anteprima del libretto sopra i 640px. Al di sotto di quel breakpoint si dispongono in colonna, nell’ordine del documento. La riga annidata Pages/Proof usa celle small-6, così i due campi numerici compatti restano affiancati anche sul telefono.
Foundation supporta griglie con margini e con spaziatura interna. In questo esempio si scelgono con coerenza gutter basate sui margini all’interno del contenitore, senza mescolare i due tipi sulla stessa riga. La mappa dei breakpoint include xlarge e xxlarge per l’uso con Sass, ma l’impostazione predefinita breakpoint-classes genera classi di larghezza small, medium e large. La presenza di una voce nella mappa non implica che nel file compilato esista automaticamente ogni classe di utilità corrispondente.
Registrare le regole di convalida effettive nel sistema di design Foundation
Registra le regole di convalida effettive
Il modulo usa data-abide con novalidate e data-validate-on=submit, per evitare che gli errori ridispongano il modulo a ogni modifica durante il clic su un pulsante; ogni span form-error rimanda al proprio input tramite data-form-error-for. Un callout di avviso contrassegnato con data-abide-error fornisce un riepilogo a livello di modulo. Gli errori relativi al titolo obbligatorio e alla casella di controllo del preflight sono gestiti insieme a due validator numerici espliciti.
Il validator per il libretto accetta numeri interi da quattro a duecento, divisibili per quattro. Il validator per le copie accetta numeri interi da uno a dieci. Entrambi vengono registrati in Foundation.Abide.defaults.validators prima dell’inizializzazione e richiamati tramite data-validator. Nel flusso testato, il solo attributo step nativo non imponeva l’incremento previsto per il libretto, quindi l’implementazione non vi fa affidamento. Il requisito delle quattro pagine vale per questo esempio, non per ogni processo di stampa.
Inserisci cinque pagine e invia: la revisione deve restare chiusa.
Inserisci sedici pagine e un titolo, poi completa il controllo di preflight.
Esamina i valori acquisiti prima di registrare la prova locale.
Collegare l’aspetto degli errori alla navigazione nel sistema di design Foundation
Collegare l’aspetto degli errori alla navigazione
In risposta a forminvalid.zf.abide, l’applicazione porta il focus sul primo campo con data-invalid. L’utente si ritrova così nel punto da correggere, mentre il callout di avviso spiega il problema complessivo. Gli span degli errori dei campi sono associati tramite aria-describedby, quindi il messaggio non è soltanto un indicatore rosso accanto a un campo privo di nome.
Il flusso completo degli eventi è visibile nell’esempio JavaScript. L’evento submit standard viene bloccato, così il browser non può navigare verso un endpoint inesistente. Solo formvalid.zf.abide crea l’istantanea temporanea e apre la revisione. È importante: associare direttamente la finestra di dialogo di revisione al pulsante di invio aggirerebbe l’esito della convalida.
Esaminare un’istantanea in Reveal nel sistema di design Foundation
Esamina un’istantanea in Reveal
La finestra modale include data-reveal e una relazione aria-labelledby con il titolo. Il gestore del modulo valido crea un oggetto temporaneo e compone il relativo elenco definitorio usando textContent. Reveal si apre tramite l’API Foundation API, gestisce il comportamento modale e si chiude con i pulsanti data-close o con il gestore di conferma.
Scegliendo Continua a modificare, la finestra si chiude senza registrare alcun risultato. Registra prova locale salva gli stessi valori temporanei nel callout di stato prima di chiudere. L’icona di chiusura ha un’etichetta esplicita. La conferma non dichiara che sia stato caricato un file o creato un ordine di stampa, perché l’applicazione non prevede nessuna delle due operazioni.
Reveal mostra i valori acquisiti dall’evento del modulo valido.
L’annullamento non modifica alcun risultato locale registrato.
La conferma registra solo lo stato dell’anteprima, non un ordine esterno.
Fissare le versioni e caricare la catena di dipendenze nel sistema di design Foundation
Fissa e carica la catena di dipendenze
Installa [email protected] e [email protected], poi copia negli asset locali il CSS compilato, Foundation JavaScript e jQuery. Carica il foglio di stile prima delle modifiche specifiche della pagina. Carica prima jQuery, poi Foundation e infine lo script dell’applicazione; defer ne preserva l’ordine dopo l’analisi del documento.
Registra i validator personalizzati prima di chiamare $(document).foundation(). Registrarli dopo l’inizializzazione crea una dipendenza temporale evitabile. L’esempio corrente usa il runtime compilato completo per garantire la riproducibilità. In produzione è possibile selezionare i plugin e le relative dipendenze per creare un bundle, ma non si dovrebbero rimuovere Abide o Reveal lasciandone gli attributi data nel markup.
Nel sistema di design Foundation il preflight è una scelta locale, non un’approvazione per la produzione
Il preflight è una decisione locale, non un’approvazione per la produzione
Lo schema e la regola sul numero di pagine rendono concreto il contesto della prova, ma non sono specifiche di produzione per una tipografia particolare. L’esempio chiede esplicitamente agli utenti di verificare i vincoli effettivi con il proprio fornitore di produzione. Il numero di copie è un limite locale a fini esemplificativi, non un dato su scorte o prezzi.
Un flusso di invio reale richiederebbe l’ispezione dei file, la convalida sul server e una risposta di accettazione tracciabile. Foundation fornisce gli elementi di base dell’interfaccia, ma i controlli specifici del dominio devono essere implementati dall’applicazione. Esplicitare questo confine consente di riutilizzare il modello di convalida e revisione senza lasciar intendere, in modo fuorviante, che l’operazione sia riuscita.
Esempi di componenti del sistema di design Foundation
Markup del banco prove
XY Grid, errori espliciti nei campi, casella di controllo del preflight, callout e conferma Reveal.
html
<main class="grid-container proof-desk"><header><p class="eyebrow">FOUNDATION / PRINT PROOF DESK</p><h1>Check the job before it leaves the desk.</h1><p class="lead">A local proof checklist built with XY Grid, Abide and Reveal.</p></header><div class="grid-x grid-margin-x"><section class="cell medium-7"><form id="proof-form" data-abide data-validate-on="submit" novalidate><div data-abide-error class="alert callout" style="display:none" role="alert"><p>Check the marked fields before reviewing this proof.</p></div><label for="job">Job title<input id="job" type="text" required pattern=".*\S.*" placeholder="Autumn studio booklet" aria-describedby="job-error"></label><span class="form-error" id="job-error" data-form-error-for="job">Enter a job title.</span><div class="grid-x grid-margin-x"><div class="cell small-6"><label for="pages">Pages<input id="pages" data-validator="booklet" type="number" value="16" min="4" max="200" step="4" required aria-describedby="pages-error"></label><span class="form-error" id="pages-error" data-form-error-for="pages">Use a multiple of four, from 4 to 200.</span></div><div class="cell small-6"><label for="copies">Proof copies<input id="copies" data-validator="copies" type="number" value="2" min="1" max="10" required aria-describedby="copies-error"></label><span class="form-error" id="copies-error" data-form-error-for="copies">Use a whole number from 1 to 10.</span></div></div><label for="stock">Paper stock<select id="stock"><option>Uncoated / warm white</option><option>Coated / bright white</option><option>Recycled / natural</option></select></label><fieldset class="fieldset"><legend>Preflight check</legend><input id="bleed" type="checkbox" required aria-describedby="bleed-error"><label for="bleed">Bleed and safe area have been checked</label><span class="form-error" id="bleed-error" data-form-error-for="bleed">Complete the preflight check.</span></fieldset><div class="button-group"><button type="submit" class="button">Review proof</button><button type="reset" class="button hollow secondary">Reset</button></div></form><div id="result" class="callout secondary" role="status">No proof recorded. This preview does not submit a print order.</div></section><aside class="cell medium-5"><div class="paper-preview" aria-label="Original booklet cover illustration"><span>STUDIO<br>NOTES</span><div class="paper-circle"></div><strong>08 / AUTUMN</strong></div><div class="callout"><h2 class="h5">Why four-page increments?</h2><p>This example assumes folded booklet signatures. It is a local preflight rule, not a universal printing requirement.</p><p>Confirm production constraints with the actual printer before using this pattern.</p></div></aside></div></main><div class="reveal" id="proof-review" data-reveal aria-labelledby="review-title"><h2 id="review-title">Review the proof details</h2><dl id="proof-summary"></dl><p>This confirms only the local example. No file is uploaded and no print order is created.</p><button id="confirm" class="button">Record local proof</button><button class="button hollow secondary" data-close>Keep editing</button><button class="close-button" data-close aria-label="Close review" type="button"><span aria-hidden="true">×</span></button></div>
Tutti i colori della copertina sono scelte dell’applicazione.
04
Configurazione dell’agente per sistema di design Foundation
Punto di partenza per l’implementazione
Il file app.js fornito registra i validator Abide prima dell’inizializzazione e collega Reveal a un evento del modulo valido. Salva l’originale CSS come style.css. L’anteprima locale incorpora queste stesse dipendenze. Il wrapper HTML include tutto il markup del body; salva gli esempi forniti di interazione e CSS con i nomi di file indicati qui.
html
<!-- npm install [email protected][email protected]
mkdir -p assets
cp node_modules/foundation-sites/dist/css/foundation.min.css assets/
cp node_modules/foundation-sites/dist/js/foundation.min.js assets/
cp node_modules/jquery/dist/jquery.min.js assets/ -->
<!doctype html><html lang="en"><head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>Proof desk</title>
<link rel="stylesheet" href="assets/foundation.min.css">
<link rel="stylesheet" href="style.css">
<script src="assets/jquery.min.js" defer></script>
<script src="assets/foundation.min.js" defer></script>
<script src="app.js" defer></script></head>
<body><main class="grid-container proof-desk"><header><p class="eyebrow">FOUNDATION / PRINT PROOF DESK</p><h1>Check the job before it leaves the desk.</h1><p class="lead">A local proof checklist built with XY Grid, Abide and Reveal.</p></header><div class="grid-x grid-margin-x"><section class="cell medium-7"><form id="proof-form" data-abide data-validate-on="submit" novalidate><div data-abide-error class="alert callout" style="display:none" role="alert"><p>Check the marked fields before reviewing this proof.</p></div><label for="job">Job title<input id="job" type="text" required pattern=".*\S.*" placeholder="Autumn studio booklet" aria-describedby="job-error"></label><span class="form-error" id="job-error" data-form-error-for="job">Enter a job title.</span><div class="grid-x grid-margin-x"><div class="cell small-6"><label for="pages">Pages<input id="pages" data-validator="booklet" type="number" value="16" min="4" max="200" step="4" required aria-describedby="pages-error"></label><span class="form-error" id="pages-error" data-form-error-for="pages">Use a multiple of four, from 4 to 200.</span></div><div class="cell small-6"><label for="copies">Proof copies<input id="copies" data-validator="copies" type="number" value="2" min="1" max="10" required aria-describedby="copies-error"></label><span class="form-error" id="copies-error" data-form-error-for="copies">Use a whole number from 1 to 10.</span></div></div><label for="stock">Paper stock<select id="stock"><option>Uncoated / warm white</option><option>Coated / bright white</option><option>Recycled / natural</option></select></label><fieldset class="fieldset"><legend>Preflight check</legend><input id="bleed" type="checkbox" required aria-describedby="bleed-error"><label for="bleed">Bleed and safe area have been checked</label><span class="form-error" id="bleed-error" data-form-error-for="bleed">Complete the preflight check.</span></fieldset><div class="button-group"><button type="submit" class="button">Review proof</button><button type="reset" class="button hollow secondary">Reset</button></div></form><div id="result" class="callout secondary" role="status">No proof recorded. This preview does not submit a print order.</div></section><aside class="cell medium-5"><div class="paper-preview" aria-label="Original booklet cover illustration"><span>STUDIO<br>NOTES</span><div class="paper-circle"></div><strong>08 / AUTUMN</strong></div><div class="callout"><h2 class="h5">Why four-page increments?</h2><p>This example assumes folded booklet signatures. It is a local preflight rule, not a universal printing requirement.</p><p>Confirm production constraints with the actual printer before using this pattern.</p></div></aside></div></main><div class="reveal" id="proof-review" data-reveal aria-labelledby="review-title"><h2 id="review-title">Review the proof details</h2><dl id="proof-summary"></dl><p>This confirms only the local example. No file is uploaded and no print order is created.</p><button id="confirm" class="button">Record local proof</button><button class="button hollow secondary" data-close>Keep editing</button><button class="close-button" data-close aria-label="Close review" type="button"><span aria-hidden="true">×</span></button></div>
</body></html>
Un prompt per il tuo progetto
Prompt per l’agente
Parti dal banco prove di stampa Foundation 6.9.0 fornito, dal relativo markup XY Grid, dai validator Abide e dal flusso Reveal. Mantieni i controlli che verificano numeri interi e multipli di quattro per il numero di pagine, insieme alla convalida all’invio, preservando etichette e associazioni degli errori. Apri la finestra di revisione Reveal nativa solo quando i dettagli della prova sono validi e mantieni l’annullamento distinto dalla conferma locale. Conserva l’inizializzazione completa e il layout originale CSS; non sostituire i validator con sole classi di errore visive né lasciare intendere che sia stato ordinato un lavoro di stampa.
05
Foundation Fonti e ambito del sistema di design
Foundation per Sites 6.9.0 con jQuery 3.7.1. Le regole di stampa e l’illustrazione sono esempi originali. Non sono implementati il caricamento di file né l’invio di un ordine di stampa.