Tema Önyükleme
Kolay tema ve bileşen değişiklikleri için global stil tercihleri için Bootstrap 4'ü yeni yerleşik Sass değişkenlerimizle özelleştirin.
giriiş
Bootstrap 3'te tema oluşturma, büyük ölçüde LESS'deki değişken geçersiz kılmalar, özel CSS ve dist
dosyalarımıza eklediğimiz ayrı bir tema stil sayfası tarafından yönlendiriliyordu. Biraz çabayla, çekirdek dosyalara dokunmadan Bootstrap 3'ün görünümünü tamamen yeniden tasarlayabilirsiniz. Bootstrap 4, tanıdık, ancak biraz farklı bir yaklaşım sağlar.
Artık tema oluşturma, Sass değişkenleri, Sass haritaları ve özel CSS tarafından gerçekleştirilir. Artık özel bir tema stil sayfası yok; bunun yerine, degradeler, gölgeler ve daha fazlasını eklemek için yerleşik temayı etkinleştirebilirsiniz.
küstah
Değişkenlerden, haritalardan, karışımlardan ve daha fazlasından yararlanmak için kaynak Sass dosyalarımızı kullanın. Bizim derlememizde, tarayıcı yuvarlama ile ilgili sorunları önlemek için Sass yuvarlama hassasiyetini 6'ya (varsayılan olarak 5) yükselttik.
dosya yapısı
Mümkün olduğunda, Bootstrap'in çekirdek dosyalarını değiştirmekten kaçının. Sass için bu, Bootstrap'i içe aktaran kendi stil sayfanızı oluşturmak anlamına gelir, böylece onu değiştirebilir ve genişletebilirsiniz. npm gibi bir paket yöneticisi kullandığınızı varsayarsak, şuna benzeyen bir dosya yapısına sahip olacaksınız:
Kaynak dosyalarımızı indirdiyseniz ve bir paket yöneticisi kullanmıyorsanız, Bootstrap'in kaynak dosyalarını kendinizden ayrı tutarak bu yapıya benzer bir şeyi manuel olarak kurmak isteyeceksiniz.
içe aktarılıyor
dosyanızda custom.scss
Bootstrap'in kaynak Sass dosyalarını içe aktaracaksınız. İki seçeneğiniz var: tüm Bootstrap'i dahil edin veya ihtiyacınız olan parçaları seçin. İkincisini teşvik ediyoruz, ancak bileşenlerimiz arasında bazı gereksinimler ve bağımlılıklar olduğunu unutmayın. Ayrıca eklentilerimiz için biraz JavaScript eklemeniz gerekecek.
Bu kurulum yerindeyken, dosyanızdaki Sass değişkenlerinden ve haritalarından herhangi birini değiştirmeye başlayabilirsiniz custom.scss
. Ayrıca Bootstrap'in // Optional
bölümlerini gerektiği gibi bölümün altına eklemeye başlayabilirsiniz. bootstrap.scss
Başlangıç noktanız olarak dosyamızdaki tam içe aktarma yığınını kullanmanızı öneririz .
Değişken varsayılanları
Bootstrap 4'teki her Sass değişkeni, Bootstrap'in !default
kaynak kodunu değiştirmeden kendi Sass'ınızdaki değişkenin varsayılan değerini geçersiz kılmanıza izin veren bayrağı içerir. Değişkenleri gerektiği gibi kopyalayıp yapıştırın, değerlerini değiştirin ve !default
bayrağı kaldırın. Bir değişken zaten atanmışsa, Bootstrap'taki varsayılan değerlerle yeniden atanmaz.
Bootstrap değişkenlerinin tam listesini scss/_variables.scss
. Bazı değişkenler olarak ayarlanmıştır null
, bu değişkenler, yapılandırmanızda geçersiz kılınmadıkça özelliğin çıktısını vermez.
Aynı Sass dosyasındaki değişken geçersiz kılmalar, varsayılan değişkenlerden önce veya sonra gelebilir. Ancak, Sass dosyalarını geçersiz kılarken, geçersiz kılmalarınız Bootstrap'in Sass dosyalarını içe aktarmadan önce gelmelidir.
Bootstrap'i npm yoluyla içe aktarırken ve derlerken background-color
ve color
için değiştiren bir örnek :<body>
Aşağıdaki genel seçenekler de dahil olmak üzere Bootstrap'teki herhangi bir değişken için gerektiği kadar tekrarlayın.
Haritalar ve döngüler
Bootstrap 4, ilgili CSS ailelerini oluşturmayı kolaylaştıran bir avuç Sass haritası, anahtar değer çifti içerir. Renklerimiz, ızgara kesme noktaları ve daha fazlası için Sass haritalarını kullanıyoruz. Tıpkı Sass değişkenleri gibi, tüm Sass haritaları !default
bayrağı içerir ve geçersiz kılınabilir ve genişletilebilir.
Sass haritalarımızdan bazıları varsayılan olarak boş haritalarla birleştirilmiştir. Bu, belirli bir Sass haritasının kolayca genişletilmesine izin vermek için yapılır, ancak bir haritadan öğelerin kaldırılmasını biraz daha zor hale getirme pahasına gelir .
Haritayı değiştir
Haritamızdaki mevcut bir rengi değiştirmek $theme-colors
için özel Sass dosyanıza aşağıdakini ekleyin:
Haritaya ekle
öğesine yeni bir renk $theme-colors
eklemek için yeni anahtarı ve değeri ekleyin:
Haritadan kaldır
Renkleri $theme-colors
veya başka bir haritadan kaldırmak için öğesini kullanın map-remove
. Gereksinimlerimiz ve seçeneklerimiz arasına eklemeniz gerektiğini unutmayın:
Gerekli anahtarlar
Bootstrap, kullandığımız gibi Sass haritalarında bazı özel anahtarların varlığını varsayar ve bunları kendimiz genişletir. Dahil edilen haritaları özelleştirirken, belirli bir Sass haritasının anahtarının kullanıldığı yerlerde hatalarla karşılaşabilirsiniz.
Örneğin, bağlantılar, düğmeler ve form durumları için primary
, success
ve danger
anahtarlarını kullanırız. $theme-colors
Bu anahtarların değerlerinin değiştirilmesi sorun yaratmamalıdır, ancak bunların kaldırılması Sass derleme sorunlarına neden olabilir. Bu durumlarda, bu değerleri kullanan Sass kodunu değiştirmeniz gerekecektir.
Fonksiyonlar
Bootstrap birkaç Sass işlevi kullanır, ancak genel temaya yalnızca bir alt küme uygulanabilir. Renk haritalarından değer almak için üç işlev ekledik:
Bunlar, v3'teki bir renk değişkenini nasıl kullandığınıza benzer şekilde, bir Sass haritasından bir renk seçmenize izin verir.
Haritadan belirli bir renk düzeyi elde etmek için başka bir işlevimiz de var . $theme-colors
Negatif seviye değerleri rengi açarken, daha yüksek seviyeler koyulaştıracaktır.
Pratikte, işlevi çağırır ve iki parametre iletirsiniz: gelen rengin adı $theme-colors
(örneğin, birincil veya tehlike) ve sayısal bir düzey.
Gelecekte ek işlevler eklenebilir veya ek Sass haritaları için seviye işlevleri oluşturmak üzere kendi özel Sass'ınız veya daha ayrıntılı olmak istiyorsanız genel bir işlev eklenebilir.
Renk kontrastı
An additional function we include in Bootstrap is the color contrast function, color-yiq
. It utilizes the YIQ color space to automatically return a light (#fff
) or dark (#111
) contrast color based on the specified base color. This function is especially useful for mixins or loops where you’re generating multiple classes.
For example, to generate color swatches from our $theme-colors
map:
It can also be used for one-off contrast needs:
You can also specify a base color with our color map functions:
Escape SVG
We use the escape-svg
function to escape the <
, >
and #
characters for SVG background images. These characters need to be escaped to properly render the background images in IE.
Add and Subtract functions
We use the add
and subtract
functions to wrap the CSS calc
function. The primary purpose of these functions is to avoid errors when a “unitless” 0
value is passed into a calc
expression. Expressions like calc(10px - 0)
will return an error in all browsers, despite being mathematically correct.
Example where the calc is valid:
Example where the calc is invalid:
Sass options
Customize Bootstrap 4 with our built-in custom variables file and easily toggle global CSS preferences with new $enable-*
Sass variables. Override a variable’s value and recompile with npm run test
as needed.
You can find and customize these variables for key global options in Bootstrap’s scss/_variables.scss
file.
Variable | Values | Description |
---|---|---|
$spacer |
1rem (default), or any value > 0 |
Specifies the default spacer value to programmatically generate our spacer utilities. |
$enable-rounded |
true (default) or false |
Enables predefined border-radius styles on various components. |
$enable-shadows |
true or false (default) |
Enables predefined box-shadow styles on various components. |
$enable-gradients |
true or false (default) |
Enables predefined gradients via background-image styles on various components. |
$enable-transitions |
true (default) or false |
Enables predefined transition s on various components. |
$enable-prefers-reduced-motion-media-query |
true (default) or false |
Enables the prefers-reduced-motion media query, which suppresses certain animations/transitions based on the users’ browser/operating system preferences. |
$enable-hover-media-query |
true or false (default) |
Deprecated |
$enable-grid-classes |
true (default) or false |
Enables the generation of CSS classes for the grid system (e.g., .container , .row , .col-md-1 , etc.). |
$enable-caret |
true (default) or false |
Enables pseudo element caret on .dropdown-toggle . |
$enable-pointer-cursor-for-buttons |
true (default) or false |
Add “hand” cursor to non-disabled button elements. |
$enable-print-styles |
true (default) or false |
Enables styles for optimizing printing. |
$enable-responsive-font-sizes |
true or false (default) |
Enables responsive font sizes. |
$enable-validation-icons |
true (default) or false |
Enables background-image icons within textual inputs and some custom forms for validation states. |
$enable-deprecation-messages |
true or false (default) |
Set to true to show warnings when using any of the deprecated mixins and functions that are planned to be removed in v5 . |
Color
Many of Bootstrap’s various components and utilities are built through a series of colors defined in a Sass map. This map can be looped over in Sass to quickly generate a series of rulesets.
All colors
All colors available in Bootstrap 4, are available as Sass variables and a Sass map in scss/_variables.scss
file. This will be expanded upon in subsequent minor releases to add additional shades, much like the grayscale palette we already include.
Here’s how you can use these in your Sass:
Color utility classes are also available for setting color
and background-color
.
In the future, we’ll aim to provide Sass maps and variables for shades of each color as we’ve done with the grayscale colors below.
Theme colors
We use a subset of all colors to create a smaller color palette for generating color schemes, also available as Sass variables and a Sass map in Bootstrap’s scss/_variables.scss
file.
Grays
An expansive set of gray variables and a Sass map in scss/_variables.scss
for consistent shades of gray across your project. Note that these are “cool grays”, which tend towards a subtle blue tone, rather than neutral grays.
Within scss/_variables.scss
, you’ll find Bootstrap’s color variables and Sass map. Here’s an example of the $colors
Sass map:
Add, remove, or modify values within the map to update how they’re used in many other components. Unfortunately at this time, not every component utilizes this Sass map. Future updates will strive to improve upon this. Until then, plan on making use of the ${color}
variables and this Sass map.
Components
Many of Bootstrap’s components and utilities are built with @each
loops that iterate over a Sass map. This is especially helpful for generating variants of a component by our $theme-colors
and creating responsive variants for each breakpoint. As you customize these Sass maps and recompile, you’ll automatically see your changes reflected in these loops.
Modifiers
Many of Bootstrap’s components are built with a base-modifier class approach. This means the bulk of the styling is contained to a base class (e.g., .btn
) while style variations are confined to modifier classes (e.g., .btn-danger
). These modifier classes are built from the $theme-colors
map to make customizing the number and name of our modifier classes.
Here are two examples of how we loop over the $theme-colors
map to generate modifiers to the .alert
component and all our .bg-*
background utilities.
Responsive
These Sass loops aren’t limited to color maps, either. You can also generate responsive variations of your components or utilities. Take for example our responsive text alignment utilities where we mix an @each
loop for the $grid-breakpoints
Sass map with a media query include.
Should you need to modify your $grid-breakpoints
, your changes will apply to all the loops iterating over that map.
CSS variables
Bootstrap 4 includes around two dozen CSS custom properties (variables) in its compiled CSS. These provide easy access to commonly used values like our theme colors, breakpoints, and primary font stacks when working in your browser’s Inspector, a code sandbox, or general prototyping.
Available variables
Here are the variables we include (note that the :root
is required). They’re located in our _root.scss
file.
Examples
CSS variables offer similar flexibility to Sass’s variables, but without the need for compilation before being served to the browser. For example, here we’re resetting our page’s font and link styles with CSS variables.
Breakpoint variables
Kesme noktalarını başlangıçta CSS değişkenlerimize dahil etsek de (örneğin, --breakpoint-md
), bunlar medya sorgularında desteklenmezler , ancak yine de medya sorgularında kural kümelerinde kullanılabilirler. Bu kesme noktası değişkenleri, JavaScript tarafından kullanılabilmeleri koşuluyla geriye dönük uyumluluk için derlenmiş CSS'de kalır. Spesifikasyonda daha fazla bilgi edinin .
İşte desteklenmeyenlere bir örnek:
Ve işte neyin desteklendiğine bir örnek: