中斷點(Breakpoints)
中斷點是可自訂的寬度,用於決定您的響應式版面配置在 Bootstrap 中如何根據裝置或視窗大小進行調整。
核心概念(Core concepts)
-
中斷點是響應式設計的基礎構件。 使用它們來控制何時可以針對特定視窗或裝置大小調整您的版面配置。
-
使用媒體查詢根據中斷點來架構您的 CSS。 媒體查詢是 CSS 的一項功能,讓您可以根據一組瀏覽器和作業系統參數有條件地套用樣式。我們在媒體查詢中最常使用
min-width。 -
行動優先、響應式設計是目標。 Bootstrap 的 CSS 旨在套用最少的樣式使版面配置在最小的中斷點下運作,然後疊加樣式來為較大的裝置調整該設計。這可以最佳化您的 CSS、改善渲染時間,並為您的訪客提供良好的體驗。
可用的中斷點(Available breakpoints)
Bootstrap 包含六個預設中斷點,有時稱為_格線層級_,用於建構響應式設計。如果您使用我們的原始 Sass 檔案,這些中斷點可以自訂。
| 中斷點 | 類別中綴 | 尺寸 |
|---|---|---|
| Extra small | 無 | <576px |
| Small | sm | ≥576px |
| Medium | md | ≥768px |
| Large | lg | ≥992px |
| Extra large | xl | ≥1200px |
| Extra extra large | xxl | ≥1400px |
每個中斷點的選擇都是為了能夠容納寬度為 12 的倍數的容器。中斷點也代表了常見裝置大小和視窗尺寸的子集——它們並不特別針對每個使用案例或裝置。相反地,這些範圍為幾乎任何裝置提供了一個強大且一致的建構基礎。
這些中斷點可以透過 Sass 自訂——您可以在我們的 _variables.scss 樣式表中的 Sass map 中找到它們。
$grid-breakpoints: (
xs: 0,
sm: 576px,
md: 768px,
lg: 992px,
xl: 1200px,
xxl: 1400px
);
有關如何修改我們的 Sass maps 和變數的更多資訊和範例,請參閱格線系統文件的 CSS 部分。
Media queries
由於 Bootstrap 是以行動優先開發的,我們使用一些媒體查詢為我們的版面配置和介面建立合理的中斷點。這些中斷點主要基於最小視窗寬度,讓我們可以隨著視窗變化放大元素。
最小寬度(Min-width)
Bootstrap 主要在我們的原始 Sass 檔案中使用以下媒體查詢範圍——或中斷點——用於我們的版面配置、格線系統和元件。
// Source mixins
// No media query necessary for xs breakpoint as it’s effectively `@media (min-width: 0) { ... }`
@include media-breakpoint-up(sm) { ... }
@include media-breakpoint-up(md) { ... }
@include media-breakpoint-up(lg) { ... }
@include media-breakpoint-up(xl) { ... }
@include media-breakpoint-up(xxl) { ... }
// Usage
// Example: Hide starting at `min-width: 0`, and then show at the `sm` breakpoint
.custom-class {
display: none;
}
@include media-breakpoint-up(sm) {
.custom-class {
display: block;
}
}
這些 Sass mixins 使用我們 Sass 變數中宣告的值轉譯到我們編譯後的 CSS 中。例如:
// X-Small devices (portrait phones, less than 576px)
// No media query for `xs` since this is the default in Bootstrap
// Small devices (landscape phones, 576px and up)
@media (min-width: 576px) { ... }
// Medium devices (tablets, 768px and up)
@media (min-width: 768px) { ... }
// Large devices (desktops, 992px and up)
@media (min-width: 992px) { ... }
// X-Large devices (large desktops, 1200px and up)
@media (min-width: 1200px) { ... }
// XX-Large devices (larger desktops, 1400px and up)
@media (min-width: 1400px) { ... }
最大寬度(Max-width)
我們偶爾會使用相反方向的媒體查詢(指定的螢幕大小_或更小_):
// No media query necessary for xs breakpoint as it’s effectively `@media (max-width: 0) { ... }`
@include media-breakpoint-down(sm) { ... }
@include media-breakpoint-down(md) { ... }
@include media-breakpoint-down(lg) { ... }
@include media-breakpoint-down(xl) { ... }
@include media-breakpoint-down(xxl) { ... }
// Example: Style from medium breakpoint and down
@include media-breakpoint-down(md) {
.custom-class {
display: block;
}
}
這些 mixins 取得那些宣告的中斷點,從它們減去 .02px,並將它們用作我們的 max-width 值。例如:
// `xs` returns only a ruleset and no media query
// ... { ... }
// `sm` applies to x-small devices (portrait phones, less than 576px)
@media (max-width: 575.98px) { ... }
// `md` applies to small devices (landscape phones, less than 768px)
@media (max-width: 767.98px) { ... }
// `lg` applies to medium devices (tablets, less than 992px)
@media (max-width: 991.98px) { ... }
// `xl` applies to large devices (desktops, less than 1200px)
@media (max-width: 1199.98px) { ... }
// `xxl` applies to x-large devices (large desktops, less than 1400px)
@media (max-width: 1399.98px) { ... }
為什麼要減去 .02px? 瀏覽器目前不支援範圍上下文查詢,因此我們透過使用更高精度的值來解決 min- 和 max- 前綴的限制,以及具有小數寬度的視窗(例如在高 DPI 裝置上的某些條件下可能會發生)。
單一中斷點(Single breakpoint)
還有媒體查詢和 mixins 可以使用最小和最大中斷點寬度來針對單一螢幕大小區段。
@include media-breakpoint-only(xs) { ... }
@include media-breakpoint-only(sm) { ... }
@include media-breakpoint-only(md) { ... }
@include media-breakpoint-only(lg) { ... }
@include media-breakpoint-only(xl) { ... }
@include media-breakpoint-only(xxl) { ... }
例如 @include media-breakpoint-only(md) { ... } 將產生:
@media (min-width: 768px) and (max-width: 991.98px) { ... }
中斷點之間(Between breakpoints)
同樣地,媒體查詢可以跨越多個中斷點寬度:
@include media-breakpoint-between(md, xl) { ... }
這將產生:
// Example
// Apply styles starting from medium devices and up to extra large devices
@media (min-width: 768px) and (max-width: 1199.98px) { ... }