კომუნალური API
utility API არის Sass-ზე დაფუძნებული ინსტრუმენტი სასარგებლო კლასების გენერირებისთვის.
Bootstrap უტილიტები გენერირდება ჩვენი უტილიტა API-ით და მათი გამოყენება შესაძლებელია Sass-ის საშუალებით ჩვენი ნაგულისხმევი კომუნალური კლასების ნაკრების შესაცვლელად ან გასაგრძელებლად. ჩვენი სასარგებლო API დაფუძნებულია Sass რუქებისა და ფუნქციების სერიაზე სხვადასხვა ვარიანტებით კლასების ოჯახების შესაქმნელად. თუ არ იცნობთ Sass რუკებს, წაიკითხეთ Sass-ის ოფიციალური დოკუმენტები დასაწყებად.
რუკა შეიცავს ყველა ჩვენს კომუნალურ პროგრამას $utilities
და მოგვიანებით გაერთიანდება თქვენს მორგებულ $utilities
რუკასთან, თუ ეს არის. კომუნალური რუქა შეიცავს კომუნალური ჯგუფების ღილაკების ჩამონათვალს, რომლებიც იღებენ შემდეგ ვარიანტებს:
ვარიანტი | ტიპი | ნაგულისხმევი მნიშვნელობა | აღწერა |
---|---|---|---|
property |
საჭირო | - | ქონების სახელი, ეს შეიძლება იყოს სტრიქონი ან სტრიქონების მასივი (მაგ. ჰორიზონტალური ბალიშები ან მინდვრები). |
values |
საჭირო | - | მნიშვნელობების სია, ან რუკა, თუ არ გსურთ, რომ კლასის სახელი იყოს იგივე მნიშვნელობა. თუ null გამოიყენება რუკის გასაღებად, ის არ არის კომპილირებული. |
class |
სურვილისამებრ | null | გენერირებული კლასის დასახელება. თუ არ არის მოწოდებული და property არის სტრიქონების მასივი, class ნაგულისხმევი იქნება მასივის პირველი ელემენტი property . |
css-var |
სურვილისამებრ | false |
ლოგიკური CSS ცვლადების გენერირება CSS წესების ნაცვლად. |
local-vars |
სურვილისამებრ | null | ადგილობრივი CSS ცვლადების რუკა CSS წესების დამატებით გენერირებისთვის. |
state |
სურვილისამებრ | null | ფსევდოკლასის ვარიანტების სია (მაგ., :hover ან :focus ) გენერირებისთვის. |
responsive |
სურვილისამებრ | false |
Boolean მიუთითებს, უნდა შეიქმნას თუ არა საპასუხო კლასები. |
rfs |
სურვილისამებრ | false |
ლოგიკური სითხის ხელახალი სკალირების გასააქტიურებლად RFS-ით . |
print |
სურვილისამებრ | false |
ლოგიკური მიუთითებს, საჭიროა თუ არა ბეჭდვის კლასების გენერირება. |
rtl |
სურვილისამებრ | true |
ლოგიკური მაჩვენებელი მიუთითებს, უნდა იყოს თუ არა უტილიტა შენახული RTL-ში. |
API განმარტა
ყველა სასარგებლო ცვლადი ემატება $utilities
ცვლადს ჩვენს _utilities.scss
სტილის ფურცელში. კომუნალური საშუალებების თითოეული ჯგუფი ასე გამოიყურება:
$utilities: (
"opacity": (
property: opacity,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
რომელიც გამოსცემს შემდეგს:
.opacity-0 { opacity: 0; }
.opacity-25 { opacity: .25; }
.opacity-50 { opacity: .5; }
.opacity-75 { opacity: .75; }
.opacity-100 { opacity: 1; }
საკუთრება
საჭირო property
გასაღები უნდა იყოს მითითებული ნებისმიერი კომუნალური პროგრამისთვის და ის უნდა შეიცავდეს მოქმედ CSS თვისებას. ეს თვისება გამოიყენება გენერირებული კომუნალური პროგრამის წესებში. როდესაც class
გასაღები გამოტოვებულია, ის ასევე ემსახურება კლასის ნაგულისხმევ სახელს. განიხილეთ text-decoration
უტილიტა:
$utilities: (
"text-decoration": (
property: text-decoration,
values: none underline line-through
)
);
გამომავალი:
.text-decoration-none { text-decoration: none !important; }
.text-decoration-underline { text-decoration: underline !important; }
.text-decoration-line-through { text-decoration: line-through !important; }
ღირებულებები
გამოიყენეთ values
ღილაკი, რათა მიუთითოთ მითითებულის რომელი მნიშვნელობები property
უნდა იყოს გამოყენებული გენერირებული კლასის სახელებსა და წესებში. შეიძლება იყოს სია ან რუკა (დაყენებულია უტილიტებში ან Sass ცვლადში).
როგორც სია, როგორც text-decoration
კომუნალური :
values: none underline line-through
როგორც რუკა, ისევე როგორც opacity
კომუნალური :
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
როგორც Sass ცვლადი, რომელიც ადგენს სიას ან რუკას, როგორც ჩვენს position
კომუნალურ პროგრამებში :
values: $position-values
Კლასი
გამოიყენეთ class
ოფცია შედგენილ CSS-ში გამოყენებული კლასის პრეფიქსის შესაცვლელად. მაგალითად, .opacity-*
შეცვლა .o-*
:
$utilities: (
"opacity": (
property: opacity,
class: o,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
გამომავალი:
.o-0 { opacity: 0 !important; }
.o-25 { opacity: .25 !important; }
.o-50 { opacity: .5 !important; }
.o-75 { opacity: .75 !important; }
.o-100 { opacity: 1 !important; }
CSS ცვლადი უტილიტები
დააყენეთ css-var
ლოგიკური ვარიანტი true
და API გამოიმუშავებს ადგილობრივ CSS ცვლადებს მოცემული სელექტორისთვის ჩვეულებრივი property: value
წესების ნაცვლად. განვიხილოთ ჩვენი .text-opacity-*
კომუნალური საშუალებები:
$utilities: (
"text-opacity": (
css-var: true,
class: text-opacity,
values: (
25: .25,
50: .5,
75: .75,
100: 1
)
),
);
გამომავალი:
.text-opacity-25 { --bs-text-opacity: .25; }
.text-opacity-50 { --bs-text-opacity: .5; }
.text-opacity-75 { --bs-text-opacity: .75; }
.text-opacity-100 { --bs-text-opacity: 1; }
ადგილობრივი CSS ცვლადები
გამოიყენეთ local-vars
ოფცია Sass რუკის დასაზუსტებლად, რომელიც გამოიმუშავებს ადგილობრივ CSS ცვლადებს სასარგებლო კლასის წესების ნაკრების ფარგლებში. გთხოვთ, გაითვალისწინოთ, რომ შესაძლოა საჭირო გახდეს დამატებითი სამუშაო ამ ადგილობრივი CSS ცვლადების გენერირებულ CSS წესებში გამოსაყენებლად. მაგალითად, განიხილეთ ჩვენი .bg-*
კომუნალური საშუალებები:
$utilities: (
"background-color": (
property: background-color,
class: bg,
local-vars: (
"bg-opacity": 1
),
values: map-merge(
$utilities-bg-colors,
(
"transparent": transparent
)
)
)
);
გამომავალი:
.bg-primary {
--bs-bg-opacity: 1;
background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
}
შტატები
გამოიყენეთ state
ოფცია ფსევდო-კლასის ვარიაციების გენერირებისთვის. ფსევდოკლასების მაგალითებია :hover
და :focus
. როდესაც მოცემულია მდგომარეობების სია, კლასების სახელები იქმნება ამ ფსევდოკლასისთვის. მაგალითად, ჰოვერზე გამჭვირვალობის შესაცვლელად, დაამატეთ state: hover
და მიიღებთ .opacity-hover:hover
თქვენს კომპილირებული CSS-ში.
გჭირდებათ მრავალი ფსევდოკლასი? გამოიყენეთ მდგომარეობების სივრცით გამოყოფილი სია: state: hover focus
.
$utilities: (
"opacity": (
property: opacity,
class: opacity,
state: hover,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
გამომავალი:
.opacity-0-hover:hover { opacity: 0 !important; }
.opacity-25-hover:hover { opacity: .25 !important; }
.opacity-50-hover:hover { opacity: .5 !important; }
.opacity-75-hover:hover { opacity: .75 !important; }
.opacity-100-hover:hover { opacity: 1 !important; }
საპასუხო
დაამატეთ responsive
ლოგიკური მნიშვნელობა საპასუხო უტილიტების გენერირებისთვის (მაგ., .opacity-md-25
) ყველა წყვეტის წერტილში .
$utilities: (
"opacity": (
property: opacity,
responsive: true,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
გამომავალი:
.opacity-0 { opacity: 0 !important; }
.opacity-25 { opacity: .25 !important; }
.opacity-50 { opacity: .5 !important; }
.opacity-75 { opacity: .75 !important; }
.opacity-100 { opacity: 1 !important; }
@media (min-width: 576px) {
.opacity-sm-0 { opacity: 0 !important; }
.opacity-sm-25 { opacity: .25 !important; }
.opacity-sm-50 { opacity: .5 !important; }
.opacity-sm-75 { opacity: .75 !important; }
.opacity-sm-100 { opacity: 1 !important; }
}
@media (min-width: 768px) {
.opacity-md-0 { opacity: 0 !important; }
.opacity-md-25 { opacity: .25 !important; }
.opacity-md-50 { opacity: .5 !important; }
.opacity-md-75 { opacity: .75 !important; }
.opacity-md-100 { opacity: 1 !important; }
}
@media (min-width: 992px) {
.opacity-lg-0 { opacity: 0 !important; }
.opacity-lg-25 { opacity: .25 !important; }
.opacity-lg-50 { opacity: .5 !important; }
.opacity-lg-75 { opacity: .75 !important; }
.opacity-lg-100 { opacity: 1 !important; }
}
@media (min-width: 1200px) {
.opacity-xl-0 { opacity: 0 !important; }
.opacity-xl-25 { opacity: .25 !important; }
.opacity-xl-50 { opacity: .5 !important; }
.opacity-xl-75 { opacity: .75 !important; }
.opacity-xl-100 { opacity: 1 !important; }
}
@media (min-width: 1400px) {
.opacity-xxl-0 { opacity: 0 !important; }
.opacity-xxl-25 { opacity: .25 !important; }
.opacity-xxl-50 { opacity: .5 !important; }
.opacity-xxl-75 { opacity: .75 !important; }
.opacity-xxl-100 { opacity: 1 !important; }
}
ბეჭდვა
print
ოფციის ჩართვა ასევე გამოიმუშავებს სასარგებლო კლასებს ბეჭდვისთვის, რომლებიც გამოიყენება მხოლოდ @media print { ... }
მედია მოთხოვნის ფარგლებში.
$utilities: (
"opacity": (
property: opacity,
print: true,
values: (
0: 0,
25: .25,
50: .5,
75: .75,
100: 1,
)
)
);
გამომავალი:
.opacity-0 { opacity: 0 !important; }
.opacity-25 { opacity: .25 !important; }
.opacity-50 { opacity: .5 !important; }
.opacity-75 { opacity: .75 !important; }
.opacity-100 { opacity: 1 !important; }
@media print {
.opacity-print-0 { opacity: 0 !important; }
.opacity-print-25 { opacity: .25 !important; }
.opacity-print-50 { opacity: .5 !important; }
.opacity-print-75 { opacity: .75 !important; }
.opacity-print-100 { opacity: 1 !important; }
}
მნიშვნელობა
API-ს მიერ გენერირებული ყველა კომუნალური პროგრამა მოიცავს !important
იმის უზრუნველსაყოფად, რომ ისინი გადალახონ კომპონენტები და მოდიფიკატორების კლასები, როგორც ეს იყო დაგეგმილი. თქვენ შეგიძლიათ გადართოთ ეს პარამეტრი გლობალურად $enable-important-utilities
ცვლადით (ნაგულისხმევად true
).
API-ის გამოყენება
ახლა, როცა გაეცანით, თუ როგორ მუშაობს Utilities API, ისწავლეთ როგორ დაამატოთ თქვენი საკუთარი კლასები და შეცვალოთ ჩვენი ნაგულისხმევი უტილიტები.
კომუნალური საშუალებების უგულებელყოფა
გააუქმეთ არსებული კომუნალური პროგრამები იგივე გასაღების გამოყენებით. მაგალითად, თუ გსურთ დამატებითი საპასუხო გადინების კომუნალური კლასები, შეგიძლიათ ამის გაკეთება:
$utilities: (
"overflow": (
responsive: true,
property: overflow,
values: visible hidden scroll auto,
),
);
კომუნალური საშუალებების დამატება
$utilities
ნაგულისხმევ რუკას შეიძლება დაემატოს ახალი კომუნალური პროგრამები map-merge
. დარწმუნდით, რომ ჩვენი საჭირო Sass ფაილები _utilities.scss
ჯერ იმპორტირებულია, შემდეგ გამოიყენეთ map-merge
თქვენი დამატებითი უტილიტების დასამატებლად. მაგალითად, აი, როგორ დავამატოთ საპასუხო cursor
პროგრამა სამი მნიშვნელობით.
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities,
(
"cursor": (
property: cursor,
class: cursor,
responsive: true,
values: auto pointer grab,
)
)
);
კომუნალური საშუალებების შეცვლა
შეცვალეთ არსებული კომუნალური პროგრამები ნაგულისხმევ $utilities
რუკაში map-get
და map-merge
ფუნქციებით. ქვემოთ მოყვანილ მაგალითში ჩვენ ვამატებთ დამატებით მნიშვნელობას width
კომუნალურ მომსახურებებს. დაიწყეთ საწყისით map-merge
და შემდეგ მიუთითეთ რომელი პროგრამა გსურთ შეცვალოთ. იქიდან, აიღეთ ჩადგმული "width"
რუკა, map-get
რომ შეხვიდეთ და შეცვალოთ პროგრამის პარამეტრები და მნიშვნელობები.
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities,
(
"width": map-merge(
map-get($utilities, "width"),
(
values: map-merge(
map-get(map-get($utilities, "width"), "values"),
(10: 10%),
),
),
),
)
);
ჩართეთ საპასუხო
თქვენ შეგიძლიათ ჩართოთ საპასუხო კლასები არსებული კომუნალური პროგრამებისთვის, რომლებიც ამჟამად არ პასუხობენ ნაგულისხმევად. მაგალითად, იმისათვის, რომ border
კლასები საპასუხო იყოს:
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities, (
"border": map-merge(
map-get($utilities, "border"),
( responsive: true ),
),
)
);
ეს ახლა წარმოქმნის საპასუხო ვარიაციებს .border
და .border-0
თითოეული წყვეტის წერტილისთვის. თქვენი გენერირებული CSS ასე გამოიყურება:
.border { ... }
.border-0 { ... }
@media (min-width: 576px) {
.border-sm { ... }
.border-sm-0 { ... }
}
@media (min-width: 768px) {
.border-md { ... }
.border-md-0 { ... }
}
@media (min-width: 992px) {
.border-lg { ... }
.border-lg-0 { ... }
}
@media (min-width: 1200px) {
.border-xl { ... }
.border-xl-0 { ... }
}
@media (min-width: 1400px) {
.border-xxl { ... }
.border-xxl-0 { ... }
}
კომუნალური პროგრამების გადარქმევა
აკლია v4 კომუნალური პროგრამები, ან გამოიყენება სხვა სახელების კონვენციაში? Utilities API შეიძლება გამოყენებულ იქნას class
მოცემული უტილიტის შედეგების გადასაფარად - მაგალითად, .ms-*
კომუნალური პროგრამების ძველის სახელით გადარქმევა .ml-*
:
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities, (
"margin-start": map-merge(
map-get($utilities, "margin-start"),
( class: ml ),
),
)
);
ამოიღეთ კომუნალური საშუალებები
წაშალეთ რომელიმე ნაგულისხმევი უტილიტა ჯგუფის გასაღების დაყენებით null
. მაგალითად, ჩვენი ყველა width
კომუნალური პროგრამის წასაშლელად, შექმენით $utilities
map-merge
და დაამატეთ "width": null
შიგნით.
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/utilities";
$utilities: map-merge(
$utilities,
(
"width": null
)
);
წაშალეთ პროგრამა RTL-ში
ზოგიერთი გვერდითი ქეისი ართულებს RTL სტილს , როგორიცაა ხაზების წყვეტა არაბულში. ამრიგად, კომუნალური პროგრამები შეიძლება ამოღებულ იქნეს RTL გამომავალიდან rtl
ოფციის დაყენებით false
:
$utilities: (
"word-wrap": (
property: word-wrap word-break,
class: text,
values: (break: break-word),
rtl: false
),
);
გამომავალი:
/* rtl:begin:remove */
.text-break {
word-wrap: break-word !important;
word-break: break-word !important;
}
/* rtl:end:remove */
ეს არაფერს გამოსცემს RTL- ში, RTLCSS remove
კონტროლის დირექტივის წყალობით .