Approccio
Scopri i principi guida, le strategie e le tecniche utilizzate per creare e mantenere Bootstrap in modo da poterlo personalizzare ed estendere più facilmente.
Sebbene le pagine introduttivi forniscano un tour introduttivo del progetto e di ciò che offre, questo documento si concentra sul motivo per cui facciamo le cose che facciamo in Bootstrap. Spiega la nostra filosofia di costruire sul web in modo che gli altri possano imparare da noi, contribuire con noi e aiutarci a migliorare.
Vedi qualcosa che non suona bene, o forse potrebbe essere fatto meglio? Apri un problema : ci piacerebbe discuterne con te.
Riepilogo
Ci immergeremo maggiormente in ciascuno di questi, ma ad alto livello, ecco cosa guida il nostro approccio.
- I componenti dovrebbero essere reattivi e mobile-first
- I componenti dovrebbero essere costruiti con una classe base ed estesi tramite classi di modifica
- Gli stati dei componenti dovrebbero obbedire a una scala z-index comune
- Quando possibile, preferisci un'implementazione HTML e CSS rispetto a JavaScript
- Quando possibile, usa le utilità su stili personalizzati
- Quando possibile, evita di imporre rigidi requisiti HTML (selettori figli)
reattivo
Gli stili reattivi di Bootstrap sono progettati per essere reattivi, un approccio che viene spesso definito mobile-first . Usiamo questo termine nei nostri documenti e siamo ampiamente d'accordo con esso, ma a volte può essere troppo ampio. Sebbene non tutti i componenti debbano essere completamente reattivi in Bootstrap, questo approccio reattivo mira a ridurre le sostituzioni CSS spingendoti ad aggiungere stili man mano che il viewport diventa più grande.
In Bootstrap, lo vedrai più chiaramente nelle nostre query sui media. Nella maggior parte dei casi, utilizziamo min-width
query che iniziano ad essere applicate a un punto di interruzione specifico e continuano attraverso i punti di interruzione più alti. Ad esempio, a .d-none
si applica min-width: 0
dall'infinito. D'altra parte, a .d-md-none
si applica dal punto di interruzione medio in su.
A volte lo useremo max-width
quando la complessità intrinseca di un componente lo richiede. A volte, queste sostituzioni sono funzionalmente e mentalmente più chiare da implementare e supportare rispetto alla riscrittura delle funzionalità principali dai nostri componenti. Ci sforziamo di limitare questo approccio, ma lo utilizzeremo di tanto in tanto.
Classi
A parte il nostro Reboot, un foglio di stile di normalizzazione cross-browser, tutti i nostri stili mirano a utilizzare le classi come selettori. Ciò significa evitare i selettori di tipo (ad esempio, input[type="text"]
) e le classi padre estranee (ad esempio, .parent .child
) che rendono gli stili troppo specifici per essere facilmente sovrascritti.
Pertanto, i componenti dovrebbero essere costruiti con una classe base che ospita coppie proprietà-valore comuni, da non sovrascrivere. Ad esempio, .btn
e .btn-primary
. Usiamo .btn
per tutti gli stili comuni come display
, padding
e border-width
. Usiamo quindi modificatori come .btn-primary
per aggiungere il colore, il colore di sfondo, il colore del bordo, ecc.
Le classi di modifica devono essere utilizzate solo quando sono presenti più proprietà o valori da modificare su più varianti. I modificatori non sono sempre necessari, quindi assicurati di salvare effettivamente righe di codice e di evitare sostituzioni non necessarie durante la creazione. Buoni esempi di modificatori sono le nostre classi di colori del tema e le varianti di taglia.
scale dell'indice z
Ci sono due z-index
scale in Bootstrap: elementi all'interno di un componente e componenti sovrapposti.
Elementi componenti
- Alcuni componenti in Bootstrap sono costruiti con elementi sovrapposti per evitare doppi bordi senza modificare la
border
proprietà. Ad esempio, gruppi di pulsanti, gruppi di input e impaginazione. - Questi componenti condividono una
z-index
scala standard di0
through3
. 0
è predefinito (iniziale),1
è:hover
,2
è:active
/.active
ed3
è:focus
.- Questo approccio soddisfa le nostre aspettative di massima priorità dell'utente. Se un elemento è focalizzato, è in vista e all'attenzione dell'utente. Gli elementi attivi sono i secondi più alti perché indicano lo stato. Il passaggio del mouse è il terzo più alto perché indica l'intento dell'utente, ma quasi tutto può essere posizionato al passaggio del mouse.
Sovrapporre componenti
Bootstrap include diversi componenti che funzionano come un overlay di qualche tipo. Ciò include, in ordine di valore più alto z-index
, menu a discesa, barre di navigazione fisse e permanenti, modali, descrizioni comandi e popover. Questi componenti hanno una propria z-index
scala che inizia a 1000
. Questo numero iniziale è stato scelto arbitrariamente e funge da piccolo buffer tra i nostri stili e gli stili personalizzati del tuo progetto.
Ogni componente di overlay aumenta z-index
leggermente il proprio valore in modo tale che i principi comuni dell'interfaccia utente consentano agli elementi focalizzati sull'utente o al passaggio del mouse di rimanere sempre visibili. Ad esempio, un modal è il blocco dei documenti (ad esempio, non puoi eseguire nessun'altra azione tranne l'azione del modal), quindi lo mettiamo sopra le nostre barre di navigazione.
Scopri di più su questo nella nostra z-index
pagina di layout .
HTML e CSS su JS
Quando possibile, preferiamo scrivere HTML e CSS su JavaScript. In generale, HTML e CSS sono più prolifici e accessibili a più persone con tutti i diversi livelli di esperienza. HTML e CSS sono anche più veloci nel tuo browser di JavaScript e il tuo browser generalmente ti offre molte funzionalità.
Questo principio è la nostra API JavaScript di prima classe che utilizza gli data
attributi. Non è necessario scrivere quasi nessun JavaScript per utilizzare i nostri plugin JavaScript; invece, scrivi HTML. Maggiori informazioni su questo nella nostra pagina panoramica di JavaScript .
Infine, i nostri stili si basano sui comportamenti fondamentali degli elementi web comuni. Quando possibile, preferiamo utilizzare ciò che fornisce il browser. Ad esempio, puoi inserire una .btn
classe su quasi tutti gli elementi, ma la maggior parte degli elementi non fornisce alcun valore semantico o funzionalità del browser. Quindi, invece, usiamo <button>
s e <a>
s.
Lo stesso vale per i componenti più complessi. Sebbene potremmo scrivere il nostro plug-in di convalida del modulo per aggiungere classi a un elemento padre in base allo stato di un input, consentendoci così di definire lo stile del testo ad esempio rosso, preferiamo utilizzare gli pseudo-elementi :valid
/ :invalid
che ogni browser ci fornisce.
Utilità
Le classi di utilità, in precedenza aiutanti in Bootstrap 3, sono un potente alleato nella lotta contro il rigonfiamento dei CSS e le scarse prestazioni della pagina. Una classe di utilità è tipicamente un singolo accoppiamento proprietà-valore immutabile espresso come una classe (ad esempio, .d-block
rappresenta display: block;
). Il loro fascino principale è la velocità d'uso durante la scrittura di HTML e la limitazione della quantità di CSS personalizzati che devi scrivere.
In particolare per quanto riguarda i CSS personalizzati, le utilità possono aiutare a combattere l'aumento delle dimensioni dei file riducendo le coppie proprietà-valore più comunemente ripetute in classi singole. Questo può avere un effetto drammatico su larga scala nei tuoi progetti.
HTML flessibile
Sebbene non sia sempre possibile, ci sforziamo di evitare di essere eccessivamente dogmatici nei nostri requisiti HTML per i componenti. Pertanto, ci concentriamo su classi singole nei nostri selettori CSS e cerchiamo di evitare i selettori figli immediati ( >
). Questo ti dà maggiore flessibilità nella tua implementazione e aiuta a mantenere il nostro CSS più semplice e meno specifico.
Convenzioni di codice
Code Guide (dal co-creatore di Bootstrap, @mdo) documenta come scriviamo il nostro HTML e CSS su Bootstrap. Specifica le linee guida per la formattazione generale, le impostazioni predefinite di buon senso, gli ordini di proprietà e attributi e altro ancora.
Usiamo Stylelint per far rispettare questi standard e altro nel nostro Sass/CSS. La nostra configurazione personalizzata di Stylelint è open source e disponibile per l'uso e l'estensione da parte di altri.
Usiamo vnu-jar per applicare HTML standard e semantico, oltre a rilevare errori comuni.