ساس
از فایلهای Sass منبع ما برای استفاده از متغیرها، نقشهها، میکسها و توابع استفاده کنید تا به شما در ساخت سریعتر و سفارشی کردن پروژه کمک کند.
از فایلهای Sass منبع ما برای استفاده از متغیرها، نقشهها، میکسها و موارد دیگر استفاده کنید.
ساختار فایل
در صورت امکان، از تغییر فایل های اصلی بوت استرپ خودداری کنید. برای Sass، این به معنای ایجاد شیوه نامه خود است که Bootstrap را وارد می کند تا بتوانید آن را تغییر دهید و گسترش دهید. با فرض اینکه از یک مدیریت بسته مانند npm استفاده می کنید، ساختار فایلی به شکل زیر خواهید داشت:
your-project/
├── scss
│ └── custom.scss
└── node_modules/
└── bootstrap
├── js
└── scss
اگر فایلهای منبع ما را دانلود کردهاید و از یک مدیریت بسته استفاده نمیکنید، میخواهید به صورت دستی چیزی شبیه به آن ساختار را تنظیم کنید و فایلهای منبع بوت استرپ را از فایلهای منبع خود جدا نگه دارید.
your-project/
├── scss
│ └── custom.scss
└── bootstrap/
├── js
└── scss
واردات
در خود custom.scss
، فایلهای Sass منبع Bootstrap را وارد میکنید. شما دو گزینه دارید: همه Bootstrap را بگنجانید یا قطعات مورد نیاز خود را انتخاب کنید. ما دومی را تشویق میکنیم، اگرچه توجه داشته باشید که برخی الزامات و وابستگیها در اجزای ما وجود دارد. همچنین باید مقداری جاوا اسکریپت را برای افزونه های ما اضافه کنید.
// 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";
@import "../node_modules/bootstrap/scss/mixins";
@import "../node_modules/bootstrap/scss/root";
// 4. Include any optional Bootstrap CSS 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";
// 5. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss`
@import "../node_modules/bootstrap/scss/utilities/api";
// 6. Add additional custom code here
با این تنظیمات، می توانید شروع به تغییر هر یک از متغیرها و نقشه های Sass در خود کنید custom.scss
. همچنین میتوانید در // Optional
صورت نیاز بخشهایی از Bootstrap را در زیر بخش اضافه کنید. پیشنهاد می کنیم از پشته کامل واردات از bootstrap.scss
فایل ما به عنوان نقطه شروع استفاده کنید.
پیش فرض های متغیر
هر متغیر Sass در Bootstrap شامل !default
پرچمی است که به شما امکان می دهد بدون تغییر کد منبع Bootstrap، مقدار پیش فرض متغیر را در Sass خود لغو کنید. متغیرها را در صورت نیاز کپی و جایگذاری کنید، مقادیر آنها را تغییر دهید و !default
پرچم را حذف کنید. اگر متغیری قبلاً اختصاص داده شده باشد، با مقادیر پیشفرض در Bootstrap دوباره تخصیص داده نمیشود.
لیست کامل متغیرهای Bootstrap را در scss/_variables.scss
. برخی از متغیرها روی تنظیم شدهاند null
، این متغیرها ویژگی را خروجی نمیکنند مگر اینکه در پیکربندی شما لغو شوند.
نادیده گرفتن متغیرها باید پس از وارد شدن توابع ما، اما قبل از بقیه واردات انجام شود.
در اینجا یک مثال است که هنگام وارد کردن و کامپایل Bootstrap از طریق npm ، background-color
و color
for را تغییر میدهد:<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/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، از جمله گزینه های جهانی زیر، این کار را تکرار کنید.
نقشه ها و حلقه ها
بوت استرپ شامل تعداد انگشت شماری از نقشه های 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
);
به نقشه اضافه کنید
با ایجاد یک نقشه Sass جدید با مقادیر سفارشی خود و ادغام آن با نقشه اصلی، رنگ های جدید را به $theme-colors
یا هر نقشه دیگری اضافه کنید. در این صورت، یک $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
. توجه داشته باشید که باید آن را بین الزامات و گزینه های ما قرار دهید:
// Required
@import "../node_modules/bootstrap/scss/functions";
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
@import "../node_modules/bootstrap/scss/root";
$theme-colors: map-remove($theme-colors, "info", "light", "dark");
// Optional
@import "../node_modules/bootstrap/scss/reboot";
@import "../node_modules/bootstrap/scss/type";
// etc
کلیدهای مورد نیاز
بوت استرپ وجود برخی از کلیدهای خاص را در نقشه های Sass فرض می کند که ما خودمان از آنها استفاده کرده و گسترش می دهیم. همانطور که نقشه های ارائه شده را سفارشی می کنید، ممکن است در هنگام استفاده از یک کلید Sass map خاص با خطاهایی مواجه شوید.
برای مثال، ما از کلیدهای، و از primary
برای success
پیوندها ، دکمهها و حالتهای فرم استفاده میکنیم. جایگزین کردن مقادیر این کلیدها نباید مشکلی ایجاد کند، اما حذف آنها ممکن است باعث ایجاد مشکلاتی در کامپایل Sass شود. در این موارد، شما باید کد Sass را تغییر دهید که از آن مقادیر استفاده می کند.danger
$theme-colors
کارکرد
رنگ ها
در کنار نقشههای Sass که داریم، رنگهای تم نیز میتوانند به عنوان متغیرهای مستقل استفاده شوند، مانند $primary
.
.custom-element {
color: $gray-100;
background-color: $dark;
}
tint-color()
با بوت استرپ و shade-color()
توابع می توانید رنگ ها را روشن یا تیره کنید. این توابع رنگها را با سیاه یا سفید مخلوط میکنند، بر خلاف توابع lighten()
و بومی Sass 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 2.0 برای کنتراست رنگ ، نویسندگان باید نسبت کنتراست حداقل 4.5:1 را با استثنائات بسیار کمی ارائه دهند .
یک تابع اضافی که در بوت استرپ قرار می دهیم، تابع کنتراست رنگ است color-contrast
. از الگوریتم WCAG 2.0 برای محاسبه آستانه کنتراست بر اساس درخشندگی نسبی در یک 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
ما از escape-svg
تابع برای فرار از <
, >
و #
برای تصاویر پس زمینه SVG استفاده می کنیم. هنگام استفاده از escape-svg
تابع، URIهای داده باید نقل قول شوند.
توابع اضافه و تفریق
ما از توابع add
و subtract
برای بسته بندی تابع CSS calc
استفاده می کنیم. هدف اصلی این توابع جلوگیری از خطا در هنگام ارسال مقدار "unitless" 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/
تعداد زیادی میکس دارد که بخش های بوت استرپ را تامین می کند و همچنین می تواند در پروژه شما مورد استفاده قرار گیرد.
طرح های رنگی
یک ترکیب کوتاه برای 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
}
}