布置Bootstrap项目的组件和选项,包括包装容器,强大的网格系统,灵活的媒体对象和响应实用程序类。
容器
容器是 Bootstrap中最基本的布局元素,在使用默认网格系统时是必需的。容器用于容纳、填充和(有时)集中其中的内容。虽然容器可以嵌套,但大多数布局不需要嵌套的容器。
Bootstrap 附带三种不同的容器:
.container
,它在每个响应断点处设置max-width
.container-fluid
,在所有断点处width: 100%
.container-{breakpoint}
,直到指定断点width: 100%
下表说明了每个容器的max-width
与每个断点上的原始 .container
和 .container-fluid
的比较。
在我们的 网格示例中查看并比较它们。
Extra small <576px |
Small ≥576px |
Medium ≥768px |
Large ≥992px |
Extra large ≥1200px |
|
---|---|---|---|---|---|
.container |
100% | 540px | 720px | 960px | 1140px |
.container-sm |
100% | 540px | 720px | 960px | 1140px |
.container-md |
100% | 100% | 720px | 960px | 1140px |
.container-lg |
100% | 100% | 100% | 960px | 1140px |
.container-xl |
100% | 100% | 100% | 100% | 1140px |
.container-fluid |
100% | 100% | 100% | 100% | 100% |
All-in-one
我们的默认 .container
类是一个响应的、固定宽度的容器,这意味着它的 max-width
在每个断点处都会改变。
<div class="container">
<!-- Content here -->
</div>
流体(Fluid)
使用 .container-fluid
作为全宽容器,横跨视口的整个宽度。
<div class="container-fluid">
...
</div>
响应式
响应容器在Bootstrap v4.4中是新的。它们允许您指定一个100%宽的类,直到达到指定的断点,然后我们为每个较高的断点应用 max-width
。例如, .container-sm
在到达 sm
断点之前是100%宽的,在这里它将以 md
、 lg
和 xl
进行扩展。
<div class="container-sm">100% wide until small breakpoint</div>
<div class="container-md">100% wide until medium breakpoint</div>
<div class="container-lg">100% wide until large breakpoint</div>
<div class="container-xl">100% wide until extra large breakpoint</div>
响应式断点
由于Bootstrap的开发首先是移动的,所以我们使用少量的 媒体查询 为我们的布局和接口创建合理的断点。这些断点主要基于最小视口宽度,允许我们在视口更改时放大元素。
Bootstrap主要使用源Sass文件中的以下媒体查询范围或断点来进行布局、网格系统和组件。
// Extra 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) { ... }
// Extra large devices (large desktops, 1200px and up)
@media (min-width: 1200px) { ... }
因为我们在Sass中编写源CSS,所以所有的媒体查询都可以通过Sass 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) { ... }
// 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;
}
}
我们偶尔会使用另一个方向的媒体查询(给定的屏幕大小或更小):
// Extra small devices (portrait phones, less than 576px)
@media (max-width: 575.98px) { ... }
// Small devices (landscape phones, less than 768px)
@media (max-width: 767.98px) { ... }
// Medium devices (tablets, less than 992px)
@media (max-width: 991.98px) { ... }
// Large devices (desktops, less than 1200px)
@media (max-width: 1199.98px) { ... }
// Extra large devices (large desktops)
// No media query since the extra-large breakpoint has no upper bound on its width
min-
和 max-
前缀 以及具有分数宽度的视口(例如,在某些条件下,在高dpi设备上可能出现这种情况)的限制。
同样,这些媒体查询也可以通过Sass mixins获得:
@include media-breakpoint-down(xs) { ... }
@include media-breakpoint-down(sm) { ... }
@include media-breakpoint-down(md) { ... }
@include media-breakpoint-down(lg) { ... }
// No media query necessary for xl breakpoint as it has no upper bound on its width
// Example: Style from medium breakpoint and down
@include media-breakpoint-down(md) {
.custom-class {
display: block;
}
}
还有媒体查询和mixin,用于使用最小和最大断点宽度针对单个屏幕大小段。
// Extra small devices (portrait phones, less than 576px)
@media (max-width: 575.98px) { ... }
// Small devices (landscape phones, 576px and up)
@media (min-width: 576px) and (max-width: 767.98px) { ... }
// Medium devices (tablets, 768px and up)
@media (min-width: 768px) and (max-width: 991.98px) { ... }
// Large devices (desktops, 992px and up)
@media (min-width: 992px) and (max-width: 1199.98px) { ... }
// Extra large devices (large desktops, 1200px and up)
@media (min-width: 1200px) { ... }
这些媒体查询也可通过Sass mixin 获得: :
@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) { ... }
类似地,媒体查询可能跨越多个断点宽度:
// Example
// Apply styles starting from medium devices and up to extra large devices
@media (min-width: 768px) and (max-width: 1199.98px) { ... }
针对相同屏幕大小范围的Sass mixin将是:
@include media-breakpoint-between(md, xl) { ... }
Z-index
一些 Bootstrap 组件利用 z-index
,CSS属性通过提供第三个轴来排列内容,从而帮助控制布局。我们在Bootstrap中使用了一个默认的 z-index比例,它被设计用来正确地分层导航、工具提示和弹出窗口、模态等等。
这些较高的值从任意数字开始,足够高和特定,以理想地避免冲突。我们需要在我们的分层组件工具提示、弹出窗口、导航栏、下拉列表、模态中使用一组标准的工具,这样我们的行为就可以合理地保持一致。我们没有理由不使用100
+ 或 500
+。
我们不鼓励对这些单独的值进行定制;如果您更改了一个值,则可能需要全部更改。
$zindex-dropdown: 1000 !default;
$zindex-sticky: 1020 !default;
$zindex-fixed: 1030 !default;
$zindex-modal-backdrop: 1040 !default;
$zindex-modal: 1050 !default;
$zindex-popover: 1060 !default;
$zindex-tooltip: 1070 !default;
为了处理组件内的重叠边界(例如,输入组中的按钮和输入),我们使用 1
、 2
和 3
的低位单位数 z-index
作为默认、悬停和活动状态。在hover/focus/active上,我们使用更高的 z-index
将特定元素置于最前面,以显示它们在兄弟元素上的边界。