رفتن به محتوای اصلی به پیمایش اسناد بروید
Check
in English

دکمه ها

از سبک های دکمه سفارشی بوت استرپ برای عملکردها در فرم ها، دیالوگ ها و موارد دیگر با پشتیبانی از چندین اندازه، حالت و موارد دیگر استفاده کنید.

مثال ها

بوت استرپ شامل چندین سبک دکمه از پیش تعریف شده است، که هر کدام هدف معنایی خود را انجام می دهند، و برای کنترل بیشتر، چند مورد اضافی به کار رفته است.

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ویژگی Boolean به هر <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کلاس از pointer-events: noneتلاش برای غیرفعال کردن عملکرد پیوند <a>s استفاده می کند. توجه داشته باشید که این ویژگی CSS هنوز برای HTML استاندارد نشده است، اما همه مرورگرهای مدرن از آن پشتیبانی می کنند. علاوه بر این، حتی در مرورگرهایی که پشتیبانی می‌کنند pointer-events: none، پیمایش صفحه کلید بی‌تأثیر باقی می‌ماند، به این معنی که کاربران بینا صفحه کلید و کاربران فناوری‌های کمکی همچنان می‌توانند این پیوندها را فعال کنند. بنابراین برای ایمن بودن، علاوه بر aria-disabled="true", یک tabindex="-1"ویژگی را نیز در این پیوندها قرار دهید تا از دریافت فوکوس صفحه کلید جلوگیری کنید و از جاوا اسکریپت سفارشی برای غیرفعال کردن عملکرد آنها به طور کلی استفاده کنید.

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

متغیرها

اضافه شده در نسخه 5.2.0

به عنوان بخشی از رویکرد متغیرهای CSS در حال تکامل Bootstrap، دکمه‌ها اکنون از متغیرهای 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-*کلاس اصلاح‌کننده سفارشی است که برای دکمه‌های منحصربه‌فرد برای اسناد خود با تخصیص مجدد متغیرهای CSS Bootstrap با ترکیبی از متغیرهای 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);
  }
}