ღილაკები
გამოიყენეთ Bootstrap-ის მორგებული ღილაკების სტილები მოქმედებებისთვის ფორმებში, დიალოგებში და სხვა მრავალი ზომის, მდგომარეობისა და სხვა მხარდაჭერით.
მაგალითები
Bootstrap მოიცავს რამდენიმე წინასწარ განსაზღვრულ ღილაკების სტილს, რომელთაგან თითოეული ემსახურება თავის სემანტიკურ მიზანს, მეტი კონტროლისთვის ჩადებული რამდენიმე დამატებით.
<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"
მათი დანიშნულების სათანადოდ გადმოცემა დამხმარე ტექნოლოგიებზე, როგორიცაა ეკრანის წამკითხველები.
<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-*
, რომ წაშალოთ ფონის ყველა სურათი და ფერი ნებისმიერ ღილაკზე.
<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
დამატებითი ზომებისთვის.
<button type="button" class="btn btn-primary btn-lg">Large button</button>
<button type="button" class="btn btn-secondary btn-lg">Large button</button>
<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 ცვლადებით:
<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
გააქტიურებულია, რაც ხელს უშლის მაუსის და აქტიური მდგომარეობების გააქტიურებას.
<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
ატრიბუტს.
<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, რომ საერთოდ გამორთოთ მათი ფუნქციონირება.
<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-ში ჩვენი ეკრანისა და უფსკრული უტილიტების ნაზავით. ღილაკების სპეციფიკური კლასების ნაცვლად კომუნალური პროგრამების გამოყენებით, ჩვენ გაცილებით მეტი კონტროლი გვაქვს ინტერვალის, გასწორებისა და რეაგირების ქცევებზე.
<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
. შეცვალეთ თქვენი ბრაუზერის ზომა, რომ ნახოთ მათი ცვლილება.
<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
.
<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>
დამატებითი კომუნალური საშუალებების გამოყენება შესაძლებელია ღილაკების განლაგების დასარეგულირებლად, როდესაც ჰორიზონტალურია. აქ ჩვენ ავიღეთ ჩვენი წინა საპასუხო მაგალითი და დავამატეთ რამდენიმე მოქნილი უტილიტა და ღილაკზე მარჟის უტილიტა ღილაკების მარჯვნივ გასწორებისთვის, როდესაც ისინი აღარ არიან დაწყობილი.
<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"
დარწმუნდეთ, რომ ის სათანადოდ არის გადაცემული დამხმარე ტექნოლოგიებზე.
<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>
<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);
}
}