გადადით მთავარ შინაარსზე დოკუმენტების ნავიგაციაზე გადასვლა
Check
in English

ღილაკები

გამოიყენეთ Bootstrap-ის მორგებული ღილაკების სტილები მოქმედებებისთვის ფორმებში, დიალოგებში და სხვა მრავალი ზომის, მდგომარეობისა და სხვა მხარდაჭერით.

მაგალითები

Bootstrap მოიცავს რამდენიმე წინასწარ განსაზღვრულ ღილაკების სტილს, რომელთაგან თითოეული ემსახურება თავის სემანტიკურ მიზანს, მეტი კონტროლისთვის ჩადებული რამდენიმე დამატებით.

html
<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-secondary">Secondary</button>
<button type="button" class="btn btn-success">Success</button>
<button type="button" class="btn btn-danger">Danger</button>
<button type="button" class="btn btn-warning">Warning</button>
<button type="button" class="btn btn-info">Info</button>
<button type="button" class="btn btn-light">Light</button>
<button type="button" class="btn btn-dark">Dark</button>

<button type="button" class="btn btn-link">Link</button>
დამხმარე ტექნოლოგიების მნიშვნელობის გადმოცემა

მნიშვნელობის დასამატებლად ფერის გამოყენება მხოლოდ ვიზუალურ მითითებას იძლევა, რომელიც არ იქნება გადაცემული დამხმარე ტექნოლოგიების მომხმარებლებზე – როგორიცაა ეკრანის წამკითხველები. დარწმუნდით, რომ ფერით აღნიშული ინფორმაცია ან აშკარაა თავად შინაარსიდან (მაგ. ხილული ტექსტი), ან შედის ალტერნატიული საშუალებებით, როგორიცაა დამატებითი ტექსტი, რომელიც დამალულია .visually-hiddenკლასში.

ტექსტის შეფუთვა გამორთეთ

თუ არ გსურთ ღილაკის ტექსტის შეფუთვა, შეგიძლიათ დაამატოთ .text-nowrapკლასი ღილაკზე. Sass-ში შეგიძლიათ დააყენოთ $btn-white-space: nowrapტექსტის შეფუთვის გამორთვა თითოეული ღილაკისთვის.

ღილაკების ტეგები

.btnკლასები შექმნილია ელემენტებთან <button>გამოსაყენებლად. თუმცა, თქვენ ასევე შეგიძლიათ გამოიყენოთ ეს კლასები <a>ან <input>ელემენტებზე (თუმცა ზოგიერთმა ბრაუზერმა შეიძლება გამოიყენოს ოდნავ განსხვავებული რენდერი).

ღილაკების კლასების გამოყენებისას <a>ელემენტებზე, რომლებიც გამოიყენება გვერდის ფუნქციონირების გასააქტიურებლად (როგორიცაა კონტენტის კოლაფსი), ნაცვლად ახალი გვერდების ან სექციების ბმული მიმდინარე გვერდზე, ამ ბმულებს უნდა მიეცეს role="button"მათი დანიშნულების სათანადოდ გადმოცემა დამხმარე ტექნოლოგიებზე, როგორიცაა ეკრანის წამკითხველები.

Ბმული
html
<a class="btn btn-primary" href="#" role="button">Link</a>
<button class="btn btn-primary" type="submit">Button</button>
<input class="btn btn-primary" type="button" value="Input">
<input class="btn btn-primary" type="submit" value="Submit">
<input class="btn btn-primary" type="reset" value="Reset">

კონტურის ღილაკები

გჭირდებათ ღილაკი, მაგრამ არა მათ მიერ მოტანილი ფონის ძლიერი ფერები? შეცვალეთ ნაგულისხმევი მოდიფიკატორის კლასები იმით .btn-outline-*, რომ წაშალოთ ფონის ყველა სურათი და ფერი ნებისმიერ ღილაკზე.

html
<button type="button" class="btn btn-outline-primary">Primary</button>
<button type="button" class="btn btn-outline-secondary">Secondary</button>
<button type="button" class="btn btn-outline-success">Success</button>
<button type="button" class="btn btn-outline-danger">Danger</button>
<button type="button" class="btn btn-outline-warning">Warning</button>
<button type="button" class="btn btn-outline-info">Info</button>
<button type="button" class="btn btn-outline-light">Light</button>
<button type="button" class="btn btn-outline-dark">Dark</button>
ღილაკების ზოგიერთი სტილი იყენებს წინა პლანზე შედარებით ღია ფერს და უნდა იყოს გამოყენებული მხოლოდ მუქ ფონზე, რათა ჰქონდეს საკმარისი კონტრასტი.

ზომები

გსურთ უფრო დიდი თუ პატარა ღილაკები? დაამატეთ .btn-lgან .btn-smდამატებითი ზომებისთვის.

html
<button type="button" class="btn btn-primary btn-lg">Large button</button>
<button type="button" class="btn btn-secondary btn-lg">Large button</button>
html
<button type="button" class="btn btn-primary btn-sm">Small button</button>
<button type="button" class="btn btn-secondary btn-sm">Small button</button>

თქვენ კი შეგიძლიათ გააფართოვოთ თქვენი საკუთარი ზომა CSS ცვლადებით:

html
<button type="button" class="btn btn-primary"
        style="--bs-btn-padding-y: .25rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;">
  Custom button
</button>

ინვალიდი მდგომარეობა

გახადეთ ღილაკები არააქტიურად disabled, ნებისმიერი <button>ელემენტისთვის ლოგიკური ატრიბუტის დამატებით. გათიშული ღილაკები pointer-events: noneგააქტიურებულია, რაც ხელს უშლის მაუსის და აქტიური მდგომარეობების გააქტიურებას.

html
<button type="button" class="btn btn-primary" disabled>Primary button</button>
<button type="button" class="btn btn-secondary" disabled>Button</button>
<button type="button" class="btn btn-outline-primary" disabled>Primary button</button>
<button type="button" class="btn btn-outline-secondary" disabled>Button</button>

ელემენტის გამოყენებით გამორთული ღილაკები <a>ცოტა განსხვავებულად იქცევიან:

  • <a>s არ აქვს disabledატრიბუტის მხარდაჭერა, ამიტომ თქვენ უნდა დაამატოთ .disabledკლასი, რომ ვიზუალურად გამორთული იყოს.
  • მომავლისთვის შესაფერისი რამდენიმე სტილი ჩართულია pointer-eventsწამყვან ღილაკებზე ყველაფრის გასათიშად.
  • გამორთული ღილაკების გამოყენება <a>უნდა შეიცავდეს aria-disabled="true"ატრიბუტს, რომელიც მიუთითებს ელემენტის მდგომარეობაზე დამხმარე ტექნოლოგიებზე.
  • გამორთული ღილაკები <a> არ უნდა შეიცავდეს hrefატრიბუტს.
html
<a class="btn btn-primary disabled" role="button" aria-disabled="true">Primary link</a>
<a class="btn btn-secondary disabled" role="button" aria-disabled="true">Link</a>

იმ შემთხვევების დასაფარად, როდესაც თქვენ უნდა შეინახოთ hrefატრიბუტი გათიშულ ბმულზე, .disabledკლასი იყენებს s- pointer-events: noneის ბმულის ფუნქციონირების გამორთვას <a>. გაითვალისწინეთ, რომ ეს CSS თვისება ჯერ არ არის სტანდარტიზებული HTML-ისთვის, მაგრამ ყველა თანამედროვე ბრაუზერი მხარს უჭერს მას. გარდა ამისა, ბრაუზერებშიც კი, რომლებიც მხარს უჭერენ pointer-events: none, კლავიატურის ნავიგაცია უცვლელი რჩება, რაც იმას ნიშნავს, რომ მხედველობითი კლავიატურის მომხმარებლები და დამხმარე ტექნოლოგიების მომხმარებლები კვლავ შეძლებენ ამ ბმულების გააქტიურებას. ასე რომ, უსაფრთხოდ რომ ვიყოთ, გარდა ამისა aria-disabled="true", ჩართეთ tabindex="-1"ატრიბუტი ამ ბმულებზე, რათა თავიდან აიცილოთ მათ კლავიატურაზე ფოკუსირება და გამოიყენეთ მორგებული JavaScript, რომ საერთოდ გამორთოთ მათი ფუნქციონირება.

html
<a href="#" class="btn btn-primary disabled" tabindex="-1" role="button" aria-disabled="true">Primary link</a>
<a href="#" class="btn btn-secondary disabled" tabindex="-1" role="button" aria-disabled="true">Link</a>

დაბლოკვის ღილაკები

შექმენით სრული სიგანის „დაბლოკვის ღილაკების“ საპასუხო დასტაები, როგორიც არის Bootstrap 4-ში ჩვენი ეკრანისა და უფსკრული უტილიტების ნაზავით. ღილაკების სპეციფიკური კლასების ნაცვლად კომუნალური პროგრამების გამოყენებით, ჩვენ გაცილებით მეტი კონტროლი გვაქვს ინტერვალის, გასწორებისა და რეაგირების ქცევებზე.

html
<div class="d-grid gap-2">
  <button class="btn btn-primary" type="button">Button</button>
  <button class="btn btn-primary" type="button">Button</button>
</div>

აქ ჩვენ ვქმნით საპასუხო ვარიაციას, დაწყებული ვერტიკალურად დაწყობილი ღილაკებით mdწყვეტის წერტილამდე, სადაც .d-md-blockცვლის .d-gridკლასს, რითაც გააუქმებს უტილიტას gap-2. შეცვალეთ თქვენი ბრაუზერის ზომა, რომ ნახოთ მათი ცვლილება.

html
<div class="d-grid gap-2 d-md-block">
  <button class="btn btn-primary" type="button">Button</button>
  <button class="btn btn-primary" type="button">Button</button>
</div>

თქვენ შეგიძლიათ დაარეგულიროთ თქვენი ბლოკის ღილაკების სიგანე ბადის სვეტის სიგანის კლასებით. მაგალითად, ნახევრად სიგანის „ბლოკის ღილაკისთვის“ გამოიყენეთ .col-6. ასევე ჰორიზონტალურად მოათავსეთ იგი .mx-auto.

html
<div class="d-grid gap-2 col-6 mx-auto">
  <button class="btn btn-primary" type="button">Button</button>
  <button class="btn btn-primary" type="button">Button</button>
</div>

დამატებითი კომუნალური საშუალებების გამოყენება შესაძლებელია ღილაკების განლაგების დასარეგულირებლად, როდესაც ჰორიზონტალურია. აქ ჩვენ ავიღეთ ჩვენი წინა საპასუხო მაგალითი და დავამატეთ რამდენიმე მოქნილი უტილიტა და ღილაკზე მარჟის უტილიტა ღილაკების მარჯვნივ გასწორებისთვის, როდესაც ისინი აღარ არიან დაწყობილი.

html
<div class="d-grid gap-2 d-md-flex justify-content-md-end">
  <button class="btn btn-primary me-md-2" type="button">Button</button>
  <button class="btn btn-primary" type="button">Button</button>
</div>

ღილაკის მოდული

ღილაკის მოდული საშუალებას გაძლევთ შექმნათ მარტივი ჩართვის/გამორთვის გადართვის ღილაკები.

ვიზუალურად, ეს გადართვის ღილაკები იდენტურია ჩამრთველის ველის გადართვის ღილაკების . თუმცა, ისინი სხვაგვარად არის გადმოცემული დამხმარე ტექნოლოგიებით: ჩამრთველის ღილაკები გამოცხადდება ეკრანის წამკითხველების მიერ, როგორც „შემოწმებული“/„შეუმოწმებელი“ (რადგან, მიუხედავად მათი გარეგნობისა, ისინი ფუნდამენტურად მაინც ჩამრთველია), ხოლო გადართვის ეს ღილაკები გამოცხადდება როგორც "ღილაკი"/"ღილაკი დაჭერილია". ამ ორ მიდგომას შორის არჩევანი დამოკიდებული იქნება თქვენს მიერ შექმნილ გადართვის ტიპზე და იქნება თუ არა აზრი მომხმარებლებისთვის გადართვაზე, როდესაც გამოცხადდება ჩამრთველის ველის სახით ან როგორც ფაქტობრივი ღილაკის სახით.

სახელმწიფოების გადართვა

დაამატეთ data-bs-toggle="button"ღილაკის მდგომარეობის გადართვაზე active. თუ ღილაკზე წინასწარ ჩართავთ, ხელით უნდა დაამატოთ .activeკლასი და aria-pressed="true" დარწმუნდეთ, რომ ის სათანადოდ არის გადაცემული დამხმარე ტექნოლოგიებზე.

html
<button type="button" class="btn btn-primary" data-bs-toggle="button">Toggle button</button>
<button type="button" class="btn btn-primary active" data-bs-toggle="button" aria-pressed="true">Active toggle button</button>
<button type="button" class="btn btn-primary" disabled data-bs-toggle="button">Disabled toggle button</button>
html
<a href="#" class="btn btn-primary" role="button" data-bs-toggle="button">Toggle link</a>
<a href="#" class="btn btn-primary active" role="button" data-bs-toggle="button" aria-pressed="true">Active toggle link</a>
<a class="btn btn-primary disabled" aria-disabled="true" role="button" data-bs-toggle="button">Disabled toggle link</a>

მეთოდები

თქვენ შეგიძლიათ შექმნათ ღილაკის მაგალითი ღილაკის კონსტრუქტორით, მაგალითად:

const bsButton = new bootstrap.Button('#myButton')
მეთოდი აღწერა
dispose ანადგურებს ელემენტის ღილაკს. (შლის DOM ელემენტზე შენახულ მონაცემებს)
getInstance სტატიკური მეთოდი, რომელიც საშუალებას გაძლევთ მიიღოთ DOM ელემენტთან დაკავშირებული ღილაკის ინსტანცია, შეგიძლიათ გამოიყენოთ იგი შემდეგნაირად: bootstrap.Button.getInstance(element).
getOrCreateInstance სტატიკური მეთოდი, რომელიც აბრუნებს DOM ელემენტთან დაკავშირებულ ღილაკების მაგალითს ან ქმნის ახალს, თუ ის არ იყო ინიციალიზებული. შეგიძლიათ გამოიყენოთ ეს ასე: bootstrap.Button.getOrCreateInstance(element).
toggle გადართავს ბიძგის მდგომარეობას. ღილაკს აძლევს იმ იერს, რომ ის გააქტიურებულია.

მაგალითად, ყველა ღილაკის გადართვა

document.querySelectorAll('.btn').forEach(buttonElement => {
  const button = bootstrap.Button.getOrCreateInstance(buttonElement)
  button.toggle()
})

CSS

ცვლადები

დამატებულია v5.2.0-ში

როგორც Bootstrap-ის განვითარებადი CSS ცვლადების მიდგომის ნაწილი, ღილაკები ახლა იყენებენ ადგილობრივ CSS ცვლადებს .btnრეალურ დროში გაუმჯობესებული პერსონალიზაციისთვის. CSS ცვლადების მნიშვნელობები დაყენებულია Sass-ის საშუალებით, ამიტომ Sass-ის პერსონალიზაცია კვლავ მხარდაჭერილია.

  --#{$prefix}btn-padding-x: #{$btn-padding-x};
  --#{$prefix}btn-padding-y: #{$btn-padding-y};
  --#{$prefix}btn-font-family: #{$btn-font-family};
  @include rfs($btn-font-size, --#{$prefix}btn-font-size);
  --#{$prefix}btn-font-weight: #{$btn-font-weight};
  --#{$prefix}btn-line-height: #{$btn-line-height};
  --#{$prefix}btn-color: #{$body-color};
  --#{$prefix}btn-bg: transparent;
  --#{$prefix}btn-border-width: #{$btn-border-width};
  --#{$prefix}btn-border-color: transparent;
  --#{$prefix}btn-border-radius: #{$btn-border-radius};
  --#{$prefix}btn-hover-border-color: transparent;
  --#{$prefix}btn-box-shadow: #{$btn-box-shadow};
  --#{$prefix}btn-disabled-opacity: #{$btn-disabled-opacity};
  --#{$prefix}btn-focus-box-shadow: 0 0 0 #{$btn-focus-width} rgba(var(--#{$prefix}btn-focus-shadow-rgb), .5);
  

თითოეული .btn-*მოდიფიკატორის კლასი განაახლებს შესაბამის CSS ცვლადებს, რათა მინიმუმამდე დაიყვანოს დამატებითი CSS წესები ჩვენი button-variant(), button-outline-variant(), და button-size()მიქსინებით.

აქ მოცემულია მოდიფიკატორის კლასის აგების მაგალითი, .btn-*როგორც ამას ვაკეთებთ ჩვენი დოკუმენტებისთვის უნიკალური ღილაკებისთვის, Bootstrap-ის CSS ცვლადების ხელახლა მინიჭებით ჩვენი საკუთარი CSS და Sass ცვლადების ნაზავით.

.btn-bd-primary {
  --bs-btn-font-weight: 600;
  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bd-violet);
  --bs-btn-border-color: var(--bd-violet);
  --bs-btn-border-radius: .5rem;
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: #{shade-color($bd-violet, 10%)};
  --bs-btn-hover-border-color: #{shade-color($bd-violet, 10%)};
  --bs-btn-focus-shadow-rgb: var(--bd-violet-rgb);
  --bs-btn-active-color: var(--bs-btn-hover-color);
  --bs-btn-active-bg: #{shade-color($bd-violet, 20%)};
  --bs-btn-active-border-color: #{shade-color($bd-violet, 20%)};
}

Sass ცვლადები

$btn-padding-y:               $input-btn-padding-y;
$btn-padding-x:               $input-btn-padding-x;
$btn-font-family:             $input-btn-font-family;
$btn-font-size:               $input-btn-font-size;
$btn-line-height:             $input-btn-line-height;
$btn-white-space:             null; // Set to `nowrap` to prevent text wrapping

$btn-padding-y-sm:            $input-btn-padding-y-sm;
$btn-padding-x-sm:            $input-btn-padding-x-sm;
$btn-font-size-sm:            $input-btn-font-size-sm;

$btn-padding-y-lg:            $input-btn-padding-y-lg;
$btn-padding-x-lg:            $input-btn-padding-x-lg;
$btn-font-size-lg:            $input-btn-font-size-lg;

$btn-border-width:            $input-btn-border-width;

$btn-font-weight:             $font-weight-normal;
$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075);
$btn-focus-width:             $input-btn-focus-width;
$btn-focus-box-shadow:        $input-btn-focus-box-shadow;
$btn-disabled-opacity:        .65;
$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125);

$btn-link-color:              var(--#{$prefix}link-color);
$btn-link-hover-color:        var(--#{$prefix}link-hover-color);
$btn-link-disabled-color:     $gray-600;

// Allows for customizing button radius independently from global border radius
$btn-border-radius:           $border-radius;
$btn-border-radius-sm:        $border-radius-sm;
$btn-border-radius-lg:        $border-radius-lg;

$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;

$btn-hover-bg-shade-amount:       15%;
$btn-hover-bg-tint-amount:        15%;
$btn-hover-border-shade-amount:   20%;
$btn-hover-border-tint-amount:    10%;
$btn-active-bg-shade-amount:      20%;
$btn-active-bg-tint-amount:       20%;
$btn-active-border-shade-amount:  25%;
$btn-active-border-tint-amount:   10%;

სასი მიქსები

არსებობს სამი მიქსი ღილაკებისთვის: ღილაკების და ღილაკების კონტურის ვარიანტების მიქსები (ორივე საფუძველზე $theme-colors), პლუს ღილაკის ზომის მიქსინი.

@mixin button-variant(
  $background,
  $border,
  $color: color-contrast($background),
  $hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),
  $hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),
  $hover-color: color-contrast($hover-background),
  $active-background: if($color == $color-contrast-light, shade-color($background, $btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),
  $active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),
  $active-color: color-contrast($active-background),
  $disabled-background: $background,
  $disabled-border: $border,
  $disabled-color: color-contrast($disabled-background)
) {
  --#{$prefix}btn-color: #{$color};
  --#{$prefix}btn-bg: #{$background};
  --#{$prefix}btn-border-color: #{$border};
  --#{$prefix}btn-hover-color: #{$hover-color};
  --#{$prefix}btn-hover-bg: #{$hover-background};
  --#{$prefix}btn-hover-border-color: #{$hover-border};
  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix($color, $border, 15%))};
  --#{$prefix}btn-active-color: #{$active-color};
  --#{$prefix}btn-active-bg: #{$active-background};
  --#{$prefix}btn-active-border-color: #{$active-border};
  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
  --#{$prefix}btn-disabled-color: #{$disabled-color};
  --#{$prefix}btn-disabled-bg: #{$disabled-background};
  --#{$prefix}btn-disabled-border-color: #{$disabled-border};
}
@mixin button-outline-variant(
  $color,
  $color-hover: color-contrast($color),
  $active-background: $color,
  $active-border: $color,
  $active-color: color-contrast($active-background)
) {
  --#{$prefix}btn-color: #{$color};
  --#{$prefix}btn-border-color: #{$color};
  --#{$prefix}btn-hover-color: #{$color-hover};
  --#{$prefix}btn-hover-bg: #{$active-background};
  --#{$prefix}btn-hover-border-color: #{$active-border};
  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb($color)};
  --#{$prefix}btn-active-color: #{$active-color};
  --#{$prefix}btn-active-bg: #{$active-background};
  --#{$prefix}btn-active-border-color: #{$active-border};
  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
  --#{$prefix}btn-disabled-color: #{$color};
  --#{$prefix}btn-disabled-bg: transparent;
  --#{$prefix}btn-disabled-border-color: #{$color};
  --#{$prefix}gradient: none;
}
@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {
  --#{$prefix}btn-padding-y: #{$padding-y};
  --#{$prefix}btn-padding-x: #{$padding-x};
  @include rfs($font-size, --#{$prefix}btn-font-size);
  --#{$prefix}btn-border-radius: #{$border-radius};
}

სასი მარყუჟები

ღილაკების ვარიანტები (ჩვეულებრივი და კონტურის ღილაკებისთვის) იყენებენ თავიანთ შესაბამის მიქსებს ჩვენს $theme-colorsრუკასთან, რათა გენერირონ მოდიფიკატორის კლასები scss/_buttons.scss.

@each $color, $value in $theme-colors {
  .btn-#{$color} {
    @if $color == "light" {
      @include button-variant(
        $value,
        $value,
        $hover-background: shade-color($value, $btn-hover-bg-shade-amount),
        $hover-border: shade-color($value, $btn-hover-border-shade-amount),
        $active-background: shade-color($value, $btn-active-bg-shade-amount),
        $active-border: shade-color($value, $btn-active-border-shade-amount)
      );
    } @else if $color == "dark" {
      @include button-variant(
        $value,
        $value,
        $hover-background: tint-color($value, $btn-hover-bg-tint-amount),
        $hover-border: tint-color($value, $btn-hover-border-tint-amount),
        $active-background: tint-color($value, $btn-active-bg-tint-amount),
        $active-border: tint-color($value, $btn-active-border-tint-amount)
      );
    } @else {
      @include button-variant($value, $value);
    }
  }
}

@each $color, $value in $theme-colors {
  .btn-outline-#{$color} {
    @include button-outline-variant($value);
  }
}