Personalizza ed estendi Bootstrap con LESS , un preprocessore CSS, per sfruttare le variabili, i mixin e altro usato per costruire il CSS di Bootstrap.
Bootstrap è realizzato con LESS al suo interno, un linguaggio di fogli di stile dinamico creato dal nostro buon amico, Alexis Sellier . Rende lo sviluppo di CSS basati su sistemi più veloce, più facile e più divertente.
Come estensione di CSS, LESS include variabili, mixin per frammenti di codice riutilizzabili, operazioni per semplici funzioni matematiche, annidamento e persino funzioni di colore.
Visita il sito ufficiale all'indirizzo http://lesscss.org/ per saperne di più.
La gestione dei colori e dei valori dei pixel nei CSS può essere un po' una seccatura, di solito piena di copia e incolla. Non con LESS però: assegna colori o valori di pixel come variabili e modificali una volta.
Quelle tre dichiarazioni del raggio di confine che devi fare nel normale vecchio CSS? Ora sono ridotti a una riga con l'aiuto di mixin, frammenti di codice che puoi riutilizzare ovunque.
Rendi la tua griglia, leader e più super flessibile facendo i calcoli al volo con le operazioni. Moltiplica, dividi, aggiungi e sottrai per raggiungere la sanità mentale CSS.
@bodyBackground |
@white |
Colore di sfondo della pagina | |
@textColor |
@grayDark |
Colore del testo predefinito per tutto il corpo, i titoli e altro | |
@linkColor |
#08c |
Colore del testo del collegamento predefinito | |
@linkColorHover |
darken(@linkColor, 15%) |
Colore predefinito al passaggio del mouse per il testo del collegamento |
@gridColumns |
12 |
@gridColumnWidth |
60px |
@gridGutterWidth |
20px |
@fluidGridColumnWidth |
6.382978723% |
@fluidGridGutterWidth |
2.127659574% |
@sansFontFamily |
"Helvetica Neue", Helvetica, Arial, sans-serif | |
@serifFontFamily |
Georgia, "Times New Roman", Times, serif |
|
@monoFontFamily |
Menlo, Monaco, "Corriere Nuovo", monospazio | |
@baseFontSize |
13px | Devono essere pixel |
@baseFontFamily |
@sansFontFamily |
|
@baseLineHeight |
18px | Devono essere pixel |
@altFontFamily |
@serifFontFamily |
|
@headingsFontFamily |
inherit |
|
@headingsFontWeight |
bold |
|
@headingsColor |
inherit |
@tableBackground |
transparent |
@tableBackgroundAccent |
#f9f9f9 |
@tableBackgroundHover |
#f5f5f5 |
@tableBorder |
ddd |
@black |
#000 | |
@grayDarker |
#222 | |
@grayDark |
#333 | |
@gray |
#555 | |
@grayLight |
#999 | |
@grayLighter |
#eee | |
@white |
#F F F |
@blue |
#049cd | |
@green |
#46a546 | |
@red |
#9d261d | |
@yellow |
#ffc40d | |
@orange |
#f89406 | |
@pink |
#c3325f | |
@purple |
#7a43b6 |
@btnBackground |
@white |
|
@btnBackgroundHighlight |
darken(@white, 10%) |
|
@btnBorder |
darken(@white, 20%) |
|
@btnPrimaryBackground |
@linkColor |
|
@btnPrimaryBackgroundHighlight |
spin(@btnPrimaryBackground, 15%) |
|
@btnInfoBackground |
#5bc0de |
|
@btnInfoBackgroundHighlight |
#2f96b4 |
|
@btnSuccessBackground |
#62c462 |
|
@btnSuccessBackgroundHighlight |
51a351 |
|
@btnWarningBackground |
lighten(@orange, 15%) |
|
@btnWarningBackgroundHighlight |
@orange |
|
@btnDangerBackground |
#ee5f5b |
|
@btnDangerBackgroundHighlight |
#bd362f |
|
@btnInverseBackground |
@gray |
|
@btnInverseBackgroundHighlight |
@grayDarker |
@placeholderText |
@grayLight |
@inputBackground |
@white |
@inputBorder |
#ccc |
@inputBorderRadius |
3px |
@inputDisabledBackground |
@grayLighter |
@formActionsBackground |
#f5f5f5 |
@warningText |
#c09853 | |
@warningBackground |
#f3edd2 | |
@errorText |
#b94a48 | |
@errorBackground |
#f2dede | |
@successText |
#468847 | |
@successBackground |
#dff0d8 | |
@infoText |
#3a87annuncio | |
@infoBackground |
#d9edf7 |
@navbarHeight |
40px | |
@navbarBackground |
@grayDarker |
|
@navbarBackgroundHighlight |
@grayDark |
|
@navbarText |
@grayLight |
|
@navbarLinkColor |
@grayLight |
|
@navbarLinkColorHover |
@white |
|
@navbarLinkColorActive |
@navbarLinkColorHover |
|
@navbarLinkBackgroundHover |
transparent |
|
@navbarLinkBackgroundActive |
@navbarBackground |
|
@navbarSearchBackground |
lighten(@navbarBackground, 25%) |
|
@navbarSearchBackgroundFocus |
@white |
|
@navbarSearchBorder |
darken(@navbarSearchBackground, 30%) |
|
@navbarSearchPlaceholderColor |
#ccc |
|
@navbarBrandColor |
@navbarLinkColor |
@dropdownBackground |
@white |
@dropdownBorder |
rgba(0,0,0,.2) |
@dropdownLinkColor |
@grayDark |
@dropdownLinkColorHover |
@white |
@dropdownLinkBackgroundHover |
@linkColor |
@@dropdownDividerTop |
#e5e5e5 |
@@dropdownDividerBottom |
@white |
@heroUnitBackground |
@grayLighter |
|
@heroUnitHeadingColor |
inherit |
|
@heroUnitLeadColor |
inhereit |
Un mixin di base è essenzialmente un include o un partial per uno snippet di CSS. Sono scritti proprio come una classe CSS e possono essere chiamati ovunque.
- . elemento {
- . clearfix ();
- }
Un mixin parametrico è proprio come un mixin di base, ma accetta anche parametri (da cui il nome) con valori predefiniti opzionali.
- . elemento {
- . bordo - raggio ( 4px );
- }
Quasi tutti i mixin di Bootstrap sono archiviati in mixins.less, un meraviglioso file di utilità .less che ti consente di utilizzare un mixin in uno qualsiasi dei file .less nel toolkit.
Quindi, vai avanti e usa quelli esistenti o sentiti libero di aggiungerne uno di cui hai bisogno.
Mescolare | Parametri | Utilizzo |
---|---|---|
.clearfix() |
nessuno | Aggiungi a qualsiasi genitore per cancellare i float all'interno |
.tab-focus() |
nessuno | Applicare lo stile di messa a fuoco Webkit e il contorno arrotondato di Firefox |
.center-block() |
nessuno | Centrare automaticamente un elemento a livello di blocco utilizzandomargin: auto |
.ie7-inline-block() |
nessuno | Utilizzare in aggiunta al normale display: inline-block per ottenere il supporto di IE7 |
.size() |
@height @width |
Imposta rapidamente l'altezza e la larghezza su una riga |
.square() |
@size |
Si basa .size() per impostare la larghezza e l'altezza sullo stesso valore |
.opacity() |
@opacity |
Imposta, in numeri interi, la percentuale di opacità (es. "50" o "75") |
Mescolare | Parametri | Utilizzo |
---|---|---|
.placeholder() |
@color: @placeholderText |
Imposta il placeholder colore del testo per gli input |
Mescolare | Parametri | Utilizzo |
---|---|---|
#font > #family > .serif() |
nessuno | Fai in modo che un elemento utilizzi una pila di caratteri serif |
#font > #family > .sans-serif() |
nessuno | Fai in modo che un elemento utilizzi una pila di caratteri sans-serif |
#font > #family > .monospace() |
nessuno | Fai in modo che un elemento utilizzi una pila di caratteri a spaziatura fissa |
#font > .shorthand() |
@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight |
Imposta facilmente la dimensione del carattere, il peso e l'interlinea |
#font > .serif() |
@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight |
Imposta la famiglia di caratteri su serif e controlla la dimensione, lo spessore e l'interlinea |
#font > .sans-serif() |
@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight |
Imposta la famiglia di caratteri su sans-serif e controlla la dimensione, il peso e l'interlinea |
#font > .monospace() |
@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight |
Imposta la famiglia di caratteri su spazio vuoto e controlla la dimensione, lo spessore e l'interlinea |
Mescolare | Parametri | Utilizzo |
---|---|---|
.container-fixed() |
nessuno | Crea un contenitore centrato orizzontalmente per contenere i tuoi contenuti |
#grid > .core() |
@gridColumnWidth, @gridGutterWidth |
Genera un sistema di griglia di pixel (contenitore, riga e colonne) con n colonne e x pixel di ampiezza |
#grid > .fluid() |
@fluidGridColumnWidth, @fluidGridGutterWidth |
Genera un sistema di griglia percentuale con n colonne e x % di larghezza della grondaia |
#grid > .input() |
@gridColumnWidth, @gridGutterWidth |
Genera il sistema di griglia di pixel per input gli elementi, tenendo conto del riempimento e dei bordi |
.makeColumn |
@columns: 1, @offset: 0 |
Trasforma qualsiasi div in una colonna della griglia senza le .span* classi |
Mescolare | Parametri | Utilizzo |
---|---|---|
.border-radius() |
@radius |
Arrotondare gli angoli di un elemento. Può essere un valore singolo o quattro valori separati da spazi |
.box-shadow() |
@shadow |
Aggiungi un'ombra esterna a un elemento |
.transition() |
@transition |
Aggiungi l'effetto di transizione CSS3 (ad es. all .2s linear ) |
.rotate() |
@degrees |
Ruota un elemento di n gradi |
.scale() |
@ratio |
Ridimensiona un elemento n volte la sua dimensione originale |
.translate() |
@x, @y |
Sposta un elemento sui piani xey |
.background-clip() |
@clip |
Ritaglia lo sfondo di un elemento (utile per border-radius ) |
.background-size() |
@size |
Controlla la dimensione delle immagini di sfondo tramite CSS3 |
.box-sizing() |
@boxmodel |
Modificare il modello box per un elemento (ad es. border-box per un full-width input ) |
.user-select() |
@select |
Controlla la selezione del testo del cursore su una pagina |
.backface-visibility() |
@visibility: visible |
Impedisci lo sfarfallio del contenuto quando utilizzi le trasformazioni CSS 3D |
.resizable() |
@direction: both |
Rendi ridimensionabile qualsiasi elemento a destra e in basso |
.content-columns() |
@columnCount, @columnGap: @gridGutterWidth |
Fai in modo che il contenuto di qualsiasi elemento utilizzi le colonne CSS3 |
.hyphens() |
@mode: auto |
Sillabazione CSS3 quando vuoi (include word-wrap: break-word ) |
Mescolare | Parametri | Utilizzo |
---|---|---|
#translucent > .background() |
@color: @white, @alpha: 1 |
Assegna a un elemento un colore di sfondo traslucido |
#translucent > .border() |
@color: @white, @alpha: 1 |
Assegna a un elemento un colore del bordo traslucido |
#gradient > .vertical() |
@startColor, @endColor |
Crea un gradiente di sfondo verticale su più browser |
#gradient > .horizontal() |
@startColor, @endColor |
Crea un gradiente di sfondo orizzontale su più browser |
#gradient > .directional() |
@startColor, @endColor, @deg |
Crea un gradiente di sfondo direzionale cross-browser |
#gradient > .vertical-three-colors() |
@startColor, @midColor, @colorStop, @endColor |
Crea una sfumatura di sfondo a tre colori per più browser |
#gradient > .radial() |
@innerColor, @outerColor |
Crea un gradiente di sfondo radiale cross-browser |
#gradient > .striped() |
@color, @angle |
Crea un gradiente di sfondo a strisce su più browser |
#gradientBar() |
@primaryColor, @secondaryColor |
Utilizzato per i pulsanti per assegnare una sfumatura e un bordo leggermente più scuro |
Installa il compilatore della riga di comando LESS, JSHint, Recess e uglify-js a livello globale con npm eseguendo il comando seguente:
$ npm install -g less jshint recess uglify-js
Una volta installato, esegui semplicemente make
dalla radice della tua directory di bootstrap e sei pronto.
Inoltre, se hai installato watchr , potresti correre make watch
per ricostruire automaticamente bootstrap ogni volta che modifichi un file nella libreria bootstrap (questo non è richiesto, solo un metodo pratico).
Installa lo strumento da riga di comando LESS tramite Node ed esegui il comando seguente:
$ lessc ./less/bootstrap.less > bootstrap.css
Assicurati di includere --compress
in quel comando se stai cercando di salvare alcuni byte!
Scarica l'ultimo Less.js e includi il percorso (e Bootstrap) nel file <head>
.
<link rel = "stylesheet/less" href = "/path/to/bootstrap.less" > <script src = "/path/to/less.js" ></script>
Per ricompilare i file .less, salvali e ricarica la pagina. Less.js li compila e li archivia nella memoria locale.
L'app per Mac non ufficiale controlla le directory dei file .less e compila il codice in file locali dopo ogni salvataggio di un file .less visualizzato.
Se lo desideri, puoi attivare le preferenze nell'app per minimizzare automaticamente e in quale directory finiscono i file compilati.
Crunch è un ottimo editor e compilatore LESS basato su Adobe Air.
Creata dallo stesso ragazzo dell'app per Mac non ufficiale, CodeKit è un'app per Mac che compila LESS, SASS, Stylus e CoffeeScript.
App per Mac, Linux e PC per la compilazione drag and drop di file LESS. Inoltre, il codice sorgente è su GitHub .