Theming Bootstrap
Anpassa Bootstrap 4 med våra nya inbyggda Sass-variabler för globala stilpreferenser för enkla teman och komponentbyten.
I Bootstrap 3 drevs teman till stor del av variabla åsidosättningar i LESS, anpassad CSS och en separat temastilmall som vi inkluderade i våra dist
filer. Med lite ansträngning kunde man helt omforma utseendet på Bootstrap 3 utan att röra kärnfilerna. Bootstrap 4 ger ett välbekant, men något annorlunda tillvägagångssätt.
Nu åstadkoms teman med Sass-variabler, Sass-kartor och anpassad CSS. Det finns ingen mer dedikerad stilmall för tema; istället kan du aktivera det inbyggda temat för att lägga till övertoningar, skuggor och mer.
Använd våra Sass-källfiler för att dra fördel av variabler, kartor, mixins och mer.
Undvik att ändra Bootstraps kärnfiler när det är möjligt. För Sass betyder det att du skapar din egen stilmall som importerar Bootstrap så att du kan ändra och utöka den. Förutsatt att du använder en pakethanterare som npm, kommer du att ha en filstruktur som ser ut så här:
Om du har laddat ner våra källfiler och inte använder en pakethanterare, vill du manuellt ställa in något som liknar den strukturen och hålla Bootstraps källfiler åtskilda från dina egna.
I din custom.scss
kommer du att importera Bootstraps käll Sass-filer. Du har två alternativ: inkludera hela Bootstrap, eller välj de delar du behöver. Vi uppmuntrar det senare, men var medveten om att det finns vissa krav och beroenden mellan våra komponenter. Du måste också inkludera lite JavaScript för våra plugins.
Med den inställningen på plats kan du börja modifiera någon av Sass-variablerna och kartorna i din custom.scss
. Du kan också börja lägga till delar av Bootstrap under // Optional
avsnittet efter behov. Vi föreslår att du använder hela importstacken från vår bootstrap.scss
fil som utgångspunkt.
Varje Sass-variabel i Bootstrap 4 innehåller !default
flaggan som gör att du kan åsidosätta variabelns standardvärde i din egen Sass utan att ändra Bootstraps källkod. Kopiera och klistra in variabler efter behov, ändra deras värden och ta bort !default
flaggan. Om en variabel redan har tilldelats kommer den inte att omtilldelas av standardvärdena i Bootstrap.
Du hittar hela listan över Bootstraps variabler i scss/_variables.scss
.
Variabelöverstyrningar inom samma Sass-fil kan komma före eller efter standardvariablerna. Men när du åsidosätter Sass-filer måste dina åsidosättningar komma innan du importerar Bootstraps Sass-filer.
Här är ett exempel som ändrar background-color
och color
för <body>
när du importerar och kompilerar Bootstrap via npm:
Upprepa vid behov för valfri variabel i Bootstrap, inklusive de globala alternativen nedan.
Bootstrap 4 innehåller en handfull Sass-kartor, nyckelvärdespar som gör det lättare att generera familjer av relaterade CSS. Vi använder Sass-kartor för våra färger, rutnätsbrytpunkter och mer. Precis som Sass-variabler inkluderar alla Sass-kartor !default
flaggan och kan åsidosättas och utökas.
Vissa av våra Sass-kartor slås ihop till tomma kartor som standard. Detta görs för att möjliggöra enkel utökning av en given Sass-karta, men kommer till priset av att det blir lite svårare att ta bort föremål från en karta.
För att ändra en befintlig färg i vår $theme-colors
karta, lägg till följande i din anpassade Sass-fil:
För att lägga till en ny färg till $theme-colors
, lägg till den nya nyckeln och värdet:
För att ta bort färger från $theme-colors
eller någon annan karta, använd map-remove
. Tänk på att du måste infoga den mellan våra krav och alternativ:
Bootstrap förutsätter närvaron av vissa specifika nycklar inom Sass-kartor som vi använde och utökar dessa själva. När du anpassar de medföljande kartorna kan du stöta på fel där en specifik Sass-kartas nyckel används.
Till exempel använder vi tangenterna primary
, success
, och danger
från $theme-colors
för länkar, knappar och formulärtillstånd. Att ersätta värdena för dessa nycklar bör inte ge några problem, men att ta bort dem kan orsaka Sass-kompileringsproblem. I dessa fall måste du ändra Sass-koden som använder dessa värden.
Bootstrap använder flera Sass-funktioner, men bara en delmängd är tillämplig på allmänt tema. Vi har inkluderat tre funktioner för att få värden från färgkartorna:
Dessa låter dig välja en färg från en Sass-karta ungefär som hur du skulle använda en färgvariabel från v3.
Vi har också en annan funktion för att få en viss färgnivå från $theme-colors
kartan. Negativa nivåvärden gör färgen ljusare, medan högre nivåer blir mörkare.
I praktiken skulle du anropa funktionen och skicka in två parametrar: namnet på färgen från $theme-colors
(t.ex. primär eller fara) och en numerisk nivå.
Ytterligare funktioner kan läggas till i framtiden eller din egen anpassade Sass för att skapa nivåfunktioner för ytterligare Sass-kartor, eller till och med en generisk sådan om du vill vara mer utförlig.
En ytterligare funktion som vi inkluderar i Bootstrap är färgkontrastfunktionen, color-yiq
. Den använder YIQ-färgrymden för att automatiskt returnera en ljus ( #fff
) eller mörk ( #111
) kontrastfärg baserat på den angivna basfärgen. Den här funktionen är särskilt användbar för mixins eller loopar där du genererar flera klasser.
Till exempel, för att generera färgprover från vår $theme-colors
karta:
Den kan också användas för engångskontrastbehov:
Du kan också ange en grundfärg med våra färgkartfunktioner:
Anpassa Bootstrap 4 med vår inbyggda anpassade variabelfil och växla enkelt globala CSS-inställningar med nya $enable-*
Sass-variabler. Åsidosätt en variabels värde och kompilera om med npm run test
efter behov.
Du kan hitta och anpassa dessa variabler för viktiga globala alternativ i Bootstraps scss/_variables.scss
fil.
Variabel | Värderingar | Beskrivning |
---|---|---|
$spacer |
1rem (standard), eller valfritt värde > 0 |
Anger standardvärdet för spacer för att programmässigt generera våra spacer-verktyg . |
$enable-rounded |
true (standard) ellerfalse |
Aktiverar fördefinierade border-radius stilar på olika komponenter. |
$enable-shadows |
true eller false (standard) |
Aktiverar fördefinierade box-shadow stilar på olika komponenter. |
$enable-gradients |
true eller false (standard) |
Aktiverar fördefinierade övertoningar via background-image stilar på olika komponenter. |
$enable-transitions |
true (standard) ellerfalse |
Aktiverar fördefinierade transition s på olika komponenter. |
$enable-hover-media-query |
true eller false (standard) |
Utfasad |
$enable-grid-classes |
true (standard) ellerfalse |
Möjliggör generering av CSS-klasser för nätsystemet (t.ex. , .container , .row , .col-md-1 etc.). |
$enable-caret |
true (standard) ellerfalse |
Aktiverar pseudoelement caret på .dropdown-toggle . |
$enable-print-styles |
true (standard) ellerfalse |
Möjliggör stilar för att optimera utskrifter. |
Många av Bootstraps olika komponenter och verktyg är byggda genom en serie färger som definieras i en Sass-karta. Den här kartan kan loopas över i Sass för att snabbt generera en serie regeluppsättningar.
Alla färger tillgängliga i Bootstrap 4, är tillgängliga som Sass-variabler och en Sass-karta i scss/_variables.scss
fil. Detta kommer att utökas i efterföljande mindre släpp för att lägga till ytterligare nyanser, ungefär som gråskalepaletten vi redan inkluderar.
Så här kan du använda dessa i din Sass:
Färgverktygsklasser finns också tillgängliga för inställning color
och background-color
.
I framtiden kommer vi att sikta på att tillhandahålla Sass-kartor och variabler för nyanser av varje färg som vi har gjort med gråskalefärgerna nedan.
Vi använder en delmängd av alla färger för att skapa en mindre färgpalett för att generera färgscheman, även tillgänglig som Sass-variabler och en Sass-karta i Bootstraps scss/_variables.scss
fil.
En omfattande uppsättning grå variabler och en Sass-karta scss/_variables.scss
för konsekventa nyanser av grått i hela ditt projekt.
Inom scss/_variables.scss
hittar du Bootstraps färgvariabler och Sass-karta. Här är ett exempel på $colors
Sass-kartan:
Lägg till, ta bort eller ändra värden i kartan för att uppdatera hur de används i många andra komponenter. Tyvärr använder inte alla komponenter denna Sass-karta för närvarande. Framtida uppdateringar kommer att sträva efter att förbättra detta. Tills dess, planera att använda ${color}
variablerna och denna Sass-karta.
Många av Bootstraps komponenter och verktyg är byggda med @each
loopar som itererar över en Sass-karta. Detta är särskilt användbart för att generera varianter av en komponent av vår $theme-colors
och skapa responsiva varianter för varje brytpunkt. När du anpassar dessa Sass-kartor och kompilerar om, kommer du automatiskt att se dina ändringar återspeglas i dessa loopar.
Många av Bootstraps komponenter är byggda med en basmodifieringsklassmodell. Detta innebär att huvuddelen av stilen finns i en basklass (t.ex. .btn
) medan stilvariationer är begränsade till modifieringsklasser (t.ex. .btn-danger
). Dessa modifieringsklasser är byggda från $theme-colors
kartan för att anpassa antalet och namnet på våra modifieringsklasser.
Här är två exempel på hur vi loopar över $theme-colors
kartan för att generera modifierare till .alert
komponenten och alla våra .bg-*
bakgrundsverktyg.
Dessa Sass-loopar är inte heller begränsade till färgkartor. Du kan också skapa responsiva varianter av dina komponenter eller verktyg. Ta till exempel våra responsiva textjusteringsverktyg där vi blandar en @each
loop för $grid-breakpoints
Sass-kartan med en mediefråga.
Om du skulle behöva ändra din $grid-breakpoints
, kommer dina ändringar att gälla för alla loopar som itererar över den kartan.
Bootstrap 4 innehåller cirka två dussin anpassade CSS-egenskaper (variabler) i sin kompilerade CSS. Dessa ger enkel åtkomst till vanliga värden som våra temafärger, brytpunkter och primära teckensnittsstaplar när du arbetar i din webbläsares Inspector, en kodsandlåda eller allmän prototyp.
Här är variablerna vi inkluderar (observera att det :root
krävs). De finns i vår _root.scss
fil.
CSS-variabler erbjuder liknande flexibilitet som Sass variabler, men utan behov av kompilering innan de serveras till webbläsaren. Till exempel, här återställer vi vår sidas teckensnitt och länkstilar med CSS-variabler.
Även om vi ursprungligen inkluderade brytpunkter i våra CSS-variabler (t.ex. --breakpoint-md
), stöds dessa inte i mediefrågor , men de kan fortfarande användas inom regeluppsättningar i mediefrågor. Dessa brytpunktsvariabler finns kvar i den kompilerade CSS för bakåtkompatibilitet eftersom de kan användas av JavaScript. Läs mer i specifikationen.
Här är ett exempel på vad som inte stöds:
Och här är ett exempel på vad som stöds: