ຂ້າມໄປຫາເນື້ອຫາຕົ້ນຕໍ ຂ້າມໄປຫາການນຳທາງເອກະສານ
in English

Utility API

API ຜົນປະໂຫຍດແມ່ນເຄື່ອງມືທີ່ອີງໃສ່ Sass ເພື່ອສ້າງຫ້ອງຮຽນຜົນປະໂຫຍດ.

ຜົນປະໂຫຍດ Bootstrap ແມ່ນຖືກສ້າງຂຶ້ນດ້ວຍ API ຜົນປະໂຫຍດຂອງພວກເຮົາແລະສາມາດຖືກນໍາໃຊ້ເພື່ອດັດແປງຫຼືຂະຫຍາຍຊຸດຊັ້ນຮຽນທີ່ເປັນປະໂຫຍດຂອງພວກເຮົາຜ່ານ Sass. API ຜົນປະໂຫຍດຂອງພວກເຮົາແມ່ນອີງໃສ່ຊຸດຂອງແຜນທີ່ Sass ແລະຫນ້າທີ່ສໍາລັບການສ້າງຄອບຄົວຂອງຫ້ອງຮຽນທີ່ມີທາງເລືອກຕ່າງໆ. ຖ້າທ່ານບໍ່ຄຸ້ນເຄີຍກັບແຜນທີ່ Sass, ກະລຸນາອ່ານຢູ່ໃນ ເອກະສານ Sass ຢ່າງເປັນທາງການ ເພື່ອເລີ່ມຕົ້ນ.

ແຜນ $utilitiesທີ່ປະກອບດ້ວຍສິ່ງອໍານວຍຄວາມສະດວກທັງໝົດຂອງພວກເຮົາ ແລະຕໍ່ມາຈະຖືກລວມເຂົ້າກັບ $utilitiesແຜນທີ່ແບບກຳນົດເອງຂອງເຈົ້າ, ຖ້າມີ. ແຜນ​ທີ່​ອຸ​ປະ​ກອນ​ປະ​ກອບ​ດ້ວຍ​ບັນ​ຊີ​ລາຍ​ຊື່​ທີ່​ສໍາ​ຄັນ​ຂອງ​ກຸ່ມ​ຜົນ​ປະ​ໂຫຍດ​ທີ່​ຍອມ​ຮັບ​ທາງ​ເລືອກ​ດັ່ງ​ຕໍ່​ໄປ​ນີ້​:

ທາງເລືອກ ປະເພດ ລາຍລະອຽດ
property ຕ້ອງການ ຊື່ຂອງຊັບສິນ, ນີ້ສາມາດເປັນ string ຫຼື array ຂອງ strings (ຕົວຢ່າງ, paddings ອອກຕາມລວງນອນຫຼືຂອບ).
values ຕ້ອງການ ລາຍຊື່ຂອງຄ່າ, ຫຼືແຜນທີ່ຖ້າທ່ານບໍ່ຕ້ອງການໃຫ້ຊື່ຊັ້ນຮຽນຄືກັນກັບຄ່າ. ຖ້າ nullຖືກໃຊ້ເປັນກະແຈແຜນທີ່, ມັນບໍ່ໄດ້ຖືກລວບລວມ.
class ທາງເລືອກ ຕົວແປສໍາລັບຊື່ຊັ້ນຮຽນຖ້າທ່ານບໍ່ຕ້ອງການໃຫ້ມັນຄືກັນກັບຊັບສິນ. ໃນກໍລະນີທີ່ທ່ານບໍ່ໃຫ້ລະຫັດ classແລະ ລະຫັດ propertyເປັນ array ຂອງ strings, ຊື່ຫ້ອງຮຽນຈະເປັນອົງປະກອບທໍາອິດຂອງ propertyarray.
state ທາງເລືອກ ບັນຊີລາຍຊື່ຂອງຕົວແປ pseudo-class ເຊັ່ນ :hoverຫຼື :focusເພື່ອສ້າງສໍາລັບຜົນປະໂຫຍດ. ບໍ່ມີຄ່າເລີ່ມຕົ້ນ.
responsive ທາງເລືອກ Boolean ຊີ້ບອກວ່າຕ້ອງສ້າງຫ້ອງຮຽນຕອບສະໜອງ. falseໂດຍຄ່າເລີ່ມຕົ້ນ.
rfs ທາງເລືອກ Boolean ເພື່ອເປີດໃຊ້ການປັບຂະໜາດຂອງນໍ້າ. ໃຫ້ເບິ່ງ ຫນ້າ RFS ເພື່ອຊອກຫາວິທີນີ້ເຮັດວຽກ. falseໂດຍຄ່າເລີ່ມຕົ້ນ.
print ທາງເລືອກ Boolean ຊີ້ບອກວ່າຕ້ອງສ້າງຫ້ອງຮຽນພິມຫຼືບໍ່. falseໂດຍຄ່າເລີ່ມຕົ້ນ.
rtl ທາງເລືອກ Boolean ຊີ້ບອກວ່າ utility ຄວນຖືກເກັບໄວ້ໃນ RTL. trueໂດຍຄ່າເລີ່ມຕົ້ນ.

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; }

ຄຳນຳໜ້າຫ້ອງຮຽນແບບກຳນົດເອງ

ໃຊ້ classທາງເລືອກໃນການປ່ຽນຄໍານໍາຫນ້າຂອງຊັ້ນທີ່ໃຊ້ໃນ CSS ທີ່ລວບລວມ:

$utilities: (
  "opacity": (
    property: opacity,
    class: o,
    values: (
      0: 0,
      25: .25,
      50: .5,
      75: .75,
      100: 1,
    )
  )
 );

ຜົນຜະລິດ:

.o-0 { opacity: 0; }
.o-25 { opacity: .25; }
.o-50 { opacity: .5; }
.o-75 { opacity: .75; }
.o-100 { opacity: 1; }

ລັດ

ໃຊ້ stateຕົວເລືອກເພື່ອສ້າງຕົວແປ pseudo-class. ຕົວຢ່າງ pseudo-classes ແມ່ນ :hoverແລະ :focus. ໃນເວລາທີ່ບັນຊີລາຍຊື່ຂອງລັດໄດ້ຖືກສະຫນອງໃຫ້, ຊື່ຫ້ອງຮຽນແມ່ນຖືກສ້າງຂຶ້ນສໍາລັບ pseudo-class ນັ້ນ. ຕົວຢ່າງ, ເພື່ອປ່ຽນຄວາມໂປ່ງແສງໃນ hover, ເພີ່ມ state: hoverແລະທ່ານຈະໄດ້ຮັບ .opacity-hover:hoverໃນ CSS ລວບລວມຂອງທ່ານ.

ຕ້ອງການ pseudo-class ຫຼາຍບໍ? ໃຊ້ລາຍຊື່ລັດທີ່ແຍກອອກຈາກຊ່ອງຫວ່າງ: 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; }

ອຸປະຖໍາທີ່ຕອບສະຫນອງ

ເພີ່ມ responsiveboolean ເພື່ອສ້າງຜົນປະໂຫຍດທີ່ຕອບສະຫນອງ (ເຊັ່ນ, .opacity-md-25) ໃນທົ່ວ breakpoints ທັງຫມົດ .

$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; }
}

ການ​ປ່ຽນ​ແປງ​ອຸ​ປະ​ກອນ​

ລົບລ້າງສິ່ງອໍານວຍຄວາມສະດວກທີ່ມີຢູ່ໂດຍໃຊ້ລະຫັດດຽວກັນ. ຕົວຢ່າງ, ຖ້າທ່ານຕ້ອງການຫ້ອງຮຽນຜົນປະໂຫຍດ overflow ເພີ່ມເຕີມ, ທ່ານສາມາດເຮັດສິ່ງນີ້:

$utilities: (
  "overflow": (
    responsive: true,
    property: overflow,
    values: visible hidden scroll auto,
  ),
);

ການເປີດໃຊ້ງານ 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ເພື່ອຮັບປະກັນວ່າພວກເຂົາ override ອົງປະກອບແລະຫ້ອງ modifier ຕາມຈຸດປະສົງ. ທ່ານສາມາດສະຫຼັບການຕັ້ງຄ່ານີ້ທົ່ວໂລກດ້ວຍ $enable-important-utilitiesຕົວແປ (ຄ່າເລີ່ມຕົ້ນເປັນ true).

ການນໍາໃຊ້ API

ໃນປັດຈຸບັນທີ່ທ່ານຄຸ້ນເຄີຍກັບວິທີການຂອງ utilities API ເຮັດວຽກ, ຮຽນຮູ້ວິທີການເພີ່ມຫ້ອງຮຽນທີ່ກໍາຫນົດເອງຂອງທ່ານເອງແລະປັບປຸງແກ້ໄຂຄ່າບໍລິການເລີ່ມຕົ້ນຂອງພວກເຮົາ.

ເພີ່ມ​ອຸ​ປະ​ກອນ​

ສາ​ມາດ​ເພີ່ມ​ອຸ​ປະ​ກອນ​ໃຫມ່​ໃນ $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ສໍາລັບແຕ່ລະ breakpoint. 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, ຫຼືເຄີຍໃຊ້ກັບສົນທິສັນຍາການຕັ້ງຊື່ອື່ນບໍ? API utilities ສາມາດຖືກນໍາໃຊ້ເພື່ອ override ຜົນ classຂອງຜົນປະໂຫຍດທີ່ໃຫ້ - ສໍາລັບການຍົກຕົວຢ່າງ, ການປ່ຽນຊື່ .ms-*utilities ເປັນ oldish .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, ຂໍຂອບໃຈກັບ ຄໍາສັ່ງຄວບຄຸມ RTLCSSremove .