Сасс
Жылдам құрастыруға және жобаңызды теңшеуге көмектесетін айнымалы мәндердің, карталардың, миксиндердің және функциялардың артықшылығын пайдалану үшін бастапқы Sass файлдарымызды пайдаланыңыз.
Айнымалы мәндердің, карталардың, миксиндердің және т.б. мүмкіндіктерін пайдалану үшін бастапқы Sass файлдарын пайдаланыңыз.
Файл құрылымы
Мүмкіндігінше, Bootstrap негізгі файлдарын өзгертуден аулақ болыңыз. Sass үшін бұл Bootstrap импорттайтын өзіңіздің стиль кестесін жасауды білдіреді, осылайша оны өзгертіп, кеңейте аласыз. Npm сияқты бума менеджерін пайдаланып жатырсыз деп есептесеңіз, сізде келесідей файл құрылымы болады:
your-project/
├── scss
│ └── custom.scss
└── node_modules/
└── bootstrap
├── js
└── scss
Бастапқы файлдарды жүктеп алған болсаңыз және пакет менеджерін пайдаланбасаңыз, Bootstrap бастапқы файлдарын өзіңіздікінен бөлек сақтай отырып, сол құрылымға ұқсас нәрсені қолмен жасағыңыз келеді.
your-project/
├── scss
│ └── custom.scss
└── bootstrap/
├── js
└── scss
Импорттау
Сізде custom.scss
Bootstrap бастапқы Sass файлдарын импорттайсыз. Сізде екі нұсқа бар: барлық Bootstrap-ті қосыңыз немесе қажетті бөліктерді таңдаңыз. Біз соңғысын қолдаймыз, бірақ біздің құрамдас бөліктерде кейбір талаптар мен тәуелділіктер бар екенін ескеріңіз. Сондай-ақ плагиндеріміз үшін кейбір JavaScript қосуыңыз қажет.
// Custom.scss
// Option A: Include all of Bootstrap
// Include any default variable overrides here (though functions won't be available)
@import "../node_modules/bootstrap/scss/bootstrap";
// Then add additional custom code here
// Custom.scss
// Option B: Include parts of Bootstrap
// 1. Include functions first (so you can manipulate colors, SVGs, calc, etc)
@import "../node_modules/bootstrap/scss/functions";
// 2. Include any default variable overrides here
// 3. Include remainder of required Bootstrap stylesheets
@import "../node_modules/bootstrap/scss/variables";
// 4. Include any default map overrides here
// 5. Include remainder of required parts
@import "../node_modules/bootstrap/scss/maps";
@import "../node_modules/bootstrap/scss/mixins";
@import "../node_modules/bootstrap/scss/root";
// 6. Optionally include any other parts as needed
@import "../node_modules/bootstrap/scss/utilities";
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
@import "../node_modules/bootstrap/scss/images";
@import "../node_modules/bootstrap/scss/containers";
@import "../node_modules/bootstrap/scss/grid";
@import "../node_modules/bootstrap/scss/helpers";
// 7. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss`
@import "../node_modules/bootstrap/scss/utilities/api";
// 8. Add additional custom code here
Бұл орнату орнында сіз өзіңіздің Sass айнымалылары мен карталарының кез келгенін өзгертуді бастай аласыз custom.scss
. // Optional
Қажет болса, бөлімнің астына Bootstrap бөліктерін қосуды бастауға болады . bootstrap.scss
Бастапқы нүкте ретінде біздің файлдағы толық импорт стекін пайдалануды ұсынамыз .
Айнымалы әдепкі мәндер
Bootstrap ішіндегі әрбір Sass айнымалысы !default
Bootstrap бастапқы кодын өзгертпестен жеке Sass жүйесінде айнымалының әдепкі мәнін қайта анықтауға мүмкіндік беретін жалаушаны қамтиды. Қажет болса, айнымалы мәндерді көшіріп, қойыңыз, олардың мәндерін өзгертіңіз және !default
жалаушаны жойыңыз. Айнымалы мән әлдеқашан тағайындалған болса, ол Bootstrap бағдарламасындағы әдепкі мәндер арқылы қайта тағайындалмайды.
Bootstrap айнымалыларының толық тізімін мына жерден табасыз scss/_variables.scss
. Кейбір айнымалылар параметріне орнатылған null
, бұл айнымалылар конфигурацияңызда қайта анықталмағанша сипатты шығармайды.
Айнымалыларды қайта анықтау біздің функциялар импортталғаннан кейін, бірақ импорттың қалған бөлігінен бұрын келуі керек.
Мұнда npm арқылы Bootstrap импорттау және құрастыру кезінде background-color
және color
үшін өзгертетін мысал келтірілген :<body>
// Required
@import "../node_modules/bootstrap/scss/functions";
// Default variable overrides
$body-bg: #000;
$body-color: #111;
// Required
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/maps";
@import "../node_modules/bootstrap/scss/mixins";
@import "../node_modules/bootstrap/scss/root";
// Optional Bootstrap components here
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
// etc
Төмендегі ғаламдық опцияларды қоса, Bootstrap ішіндегі кез келген айнымалы үшін қажетінше қайталаңыз.
Карталар мен циклдар
Bootstrap бірнеше Sass карталарын, сәйкес CSS отбасыларын құруды жеңілдететін негізгі мән жұптарын қамтиды. Біз Sass карталарын түстеріміз, тордың тоқтау нүктелері және т.б. үшін пайдаланамыз. Sass айнымалылары сияқты, барлық Sass карталары !default
жалаушаны қамтиды және оларды қайта анықтауға және кеңейтуге болады.
Кейбір Sass карталары әдепкі бойынша бос карталарға біріктірілген. Бұл берілген Sass картасын оңай кеңейтуге мүмкіндік беру үшін жасалады, бірақ картадан элементтерді алып тастауды біршама қиындатады.
Картаны өзгерту
Картадағы барлық айнымалылар $theme-colors
дербес айнымалылар ретінде анықталады. Картамыздағы бар түсті өзгерту үшін $theme-colors
теңшелетін Sass файлыңызға келесіні қосыңыз:
$primary: #0074d9;
$danger: #ff4136;
$theme-colors
Кейінірек бұл айнымалылар Bootstrap картасында орнатылады :
$theme-colors: (
"primary": $primary,
"danger": $danger
);
Картаға қосу
$theme-colors
Өзіңіздің теңшелетін мәндеріңізбен жаңа Sass картасын жасап, оны бастапқы картамен біріктіру арқылы жаңа түстерді немесе кез келген басқа картаға қосыңыз. Бұл жағдайда біз жаңа $custom-colors
карта жасап, онымен біріктіреміз $theme-colors
.
// Create your own map
$custom-colors: (
"custom-color": #900
);
// Merge the maps
$theme-colors: map-merge($theme-colors, $custom-colors);
Картадан жою
Түстерді жою үшін $theme-colors
немесе кез келген басқа картаны пайдаланыңыз map-remove
. $theme-colors
Біздің талаптарымыздың арасына оның анықтамасынан кейін variables
және оны қолдану алдында енгізу керек екенін ескеріңіз maps
:
// Required
@import "../node_modules/bootstrap/scss/functions";
@import "../node_modules/bootstrap/scss/variables";
$theme-colors: map-remove($theme-colors, "info", "light", "dark");
@import "../node_modules/bootstrap/scss/maps";
@import "../node_modules/bootstrap/scss/mixins";
@import "../node_modules/bootstrap/scss/root";
// Optional
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
// etc
Қажетті кілттер
Bootstrap Sass карталарында кейбір арнайы кілттердің болуын болжайды, өйткені біз оларды өзіміз қолданып, кеңейтеміз. Қосылған карталарды теңшеген кезде, белгілі бір Sass картасының кілті пайдаланылған кезде қателерге тап болуыңыз мүмкін.
Мысалы, сілтемелер, түймелер және пішін күйлері үшін primary
, success
, және danger
пернелерін пайдаланамыз. $theme-colors
Бұл кілттердің мәндерін ауыстыру ешқандай мәселе тудырмауы керек, бірақ оларды жою Sass компиляция мәселелерін тудыруы мүмкін. Бұл жағдайларда сол мәндерді пайдаланатын Sass кодын өзгерту қажет болады.
Функциялар
Түстер
Бізде бар Sass карталарының жанында тақырып түстері сияқты дербес айнымалылар ретінде де пайдалануға болады $primary
.
.custom-element {
color: $gray-100;
background-color: $dark;
}
tint-color()
Түстерді Bootstrap және shade-color()
функциялары арқылы ашық немесе қоюлатуға болады . Бұл функциялар түстерді қара немесе ақ түстермен араластырады, бұл Sass компаниясының жергілікті функцияларына және жеңілдікті белгіленген мөлшерге өзгертетін функцияларға ұқсамайды lighten()
, darken()
бұл көбінесе қалаған әсерге әкелмейді.
// Tint a color: mix a color with white
@function tint-color($color, $weight) {
@return mix(white, $color, $weight);
}
// Shade a color: mix a color with black
@function shade-color($color, $weight) {
@return mix(black, $color, $weight);
}
// Shade the color if the weight is positive, else tint it
@function shift-color($color, $weight) {
@return if($weight > 0, shade-color($color, $weight), tint-color($color, -$weight));
}
Іс жүзінде сіз функцияны шақырып, түс пен салмақ параметрлерін бересіз.
.custom-element {
color: tint-color($primary, 10%);
}
.custom-element-2 {
color: shade-color($danger, 30%);
}
Түс контрасты
Веб-мазмұнға қол жетімділік нұсқаулығының (WCAG) контраст талаптарын қанағаттандыру үшін авторлар өте аз ерекшеліктерді қоспағанда, ең аз мәтін түсінің контрастын 4,5:1 және мәтіндік емес түс контрастын 3:1 болуы керек.
Бұған көмектесу үшін color-contrast
функцияны Bootstrap-ке қостық. Ол көрсетілген негізгі түс негізінде ашық ( ), күңгірт ( ) немесе қара ( ) контраст түсті автоматты түрде қайтару үшін түс кеңістігіндегі салыстырмалы жарықтылыққа негізделген контраст шегін есептеу үшін WCAG контраст қатынасының алгоритмін пайдаланады. Бұл функция әсіресе бірнеше сыныпты жасайтын миксиндер немесе циклдар үшін пайдалы.sRGB
#fff
#212529
#000
Мысалы, біздің $theme-colors
картадан түс үлгілерін жасау үшін:
@each $color, $value in $theme-colors {
.swatch-#{$color} {
color: color-contrast($value);
}
}
Оны бір реттік контраст қажеттіліктері үшін де пайдалануға болады:
.custom-element {
color: color-contrast(#000); // returns `color: #fff`
}
Сондай-ақ, негізгі түсті біздің түсті карта функцияларымызбен көрсетуге болады:
.custom-element {
color: color-contrast($dark); // returns `color: #fff`
}
Escape SVG
Біз SVG фондық кескіндер үшін , және таңбаларынан escape-svg
құтылу үшін функцияны қолданамыз. Функцияны пайдаланған кезде деректер URI мекенжайлары цитаталануы керек.<
>
#
escape-svg
Қосу және азайту функциялары
CSS функциясын орау үшін add
және функцияларын қолданамыз . Бұл функциялардың негізгі мақсаты өрнекке «бірліксіз» мән берілген кезде қателерді болдырмау болып табылады . сияқты өрнектер математикалық тұрғыдан дұрыс болғанымен, барлық браузерлерде қатені қайтарады.subtract
calc
0
calc
calc(10px - 0)
Есеп жарамды болатын мысал:
$border-radius: .25rem;
$border-width: 1px;
.element {
// Output calc(.25rem - 1px) is valid
border-radius: calc($border-radius - $border-width);
}
.element {
// Output the same calc(.25rem - 1px) as above
border-radius: subtract($border-radius, $border-width);
}
Есеп жарамсыз болатын мысал:
$border-radius: .25rem;
$border-width: 0;
.element {
// Output calc(.25rem - 0) is invalid
border-radius: calc($border-radius - $border-width);
}
.element {
// Output .25rem
border-radius: subtract($border-radius, $border-width);
}
Миксиндер
Біздің scss/mixins/
каталогта Bootstrap бөліктерін қуаттайтын және сіздің жеке жобаңызда да пайдалануға болатын көптеген қоспалар бар.
Түс схемалары
Мультимедиа сұрауына арналған стенографиялық араластыру , , және теңшелетін түс схемаларына prefers-color-scheme
қолдау көрсету арқылы қол жетімді .light
dark
@mixin color-scheme($name) {
@media (prefers-color-scheme: #{$name}) {
@content;
}
}
.custom-element {
@include color-scheme(dark) {
// Insert dark mode styles here
}
@include color-scheme(custom-named-scheme) {
// Insert custom color scheme styles here
}
}