diff options
author | XhmikosR <xhmikosr@gmail.com> | 2019-11-26 20:12:00 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-26 20:12:00 +0300 |
commit | 593574d510050dc2d5eeafe70a58ae182f020480 (patch) | |
tree | 043a163d6c712121ca0fe1f34c419ab592b03185 /site/docs/4.4/layout/overview.md | |
parent | d61bba584f89c7df0d780a9ff214a58f7b58cb94 (diff) |
Release v4.4.0 (#29735)v4.4.0
Diffstat (limited to 'site/docs/4.4/layout/overview.md')
-rw-r--r-- | site/docs/4.4/layout/overview.md | 275 |
1 files changed, 275 insertions, 0 deletions
diff --git a/site/docs/4.4/layout/overview.md b/site/docs/4.4/layout/overview.md new file mode 100644 index 0000000000..f1256db8a5 --- /dev/null +++ b/site/docs/4.4/layout/overview.md @@ -0,0 +1,275 @@ +--- +layout: docs +title: Overview +description: Components and options for laying out your Bootstrap project, including wrapping containers, a powerful grid system, a flexible media object, and responsive utility classes. +group: layout +redirect_from: "/docs/4.4/layout/" +toc: true +--- + +## Containers + +Containers are the most basic layout element in Bootstrap and are **required when using our default grid system**. Containers are used to contain, pad, and (sometimes) center the content within them. While containers *can* be nested, most layouts do not require a nested container. + +Bootstrap comes with three different containers: + +- `.container`, which sets a `max-width` at each responsive breakpoint +- `.container-fluid`, which is `width: 100%` at all breakpoints +- `.container-{breakpoint}`, which is `width: 100%` until the specified breakpoint + +The table below illustrates how each container's `max-width` compares to the original `.container` and `.container-fluid` across each breakpoint. + +See them in action and compare them in our [Grid example]({{ site.baseurl }}/docs/{{ site.docs_version }}/examples/grid/#containers). + +<table class="table text-left"> + <thead> + <tr> + <th></th> + <th> + Extra small<br> + <span class="font-weight-normal"><576px</span> + </th> + <th> + Small<br> + <span class="font-weight-normal">≥576px</span> + </th> + <th> + Medium<br> + <span class="font-weight-normal">≥768px</span> + </th> + <th> + Large<br> + <span class="font-weight-normal">≥992px</span> + </th> + <th> + Extra large<br> + <span class="font-weight-normal">≥1200px</span> + </th> + </tr> + </thead> + <tbody> + <tr> + <td><code>.container</code></td> + <td class="text-muted">100%</td> + <td>540px</td> + <td>720px</td> + <td>960px</td> + <td>1140px</td> + </tr> + <tr> + <td><code>.container-sm</code></td> + <td class="text-muted">100%</td> + <td>540px</td> + <td>720px</td> + <td>960px</td> + <td>1140px</td> + </tr> + <tr> + <td><code>.container-md</code></td> + <td class="text-muted">100%</td> + <td class="text-muted">100%</td> + <td>720px</td> + <td>960px</td> + <td>1140px</td> + </tr> + <tr> + <td><code>.container-lg</code></td> + <td class="text-muted">100%</td> + <td class="text-muted">100%</td> + <td class="text-muted">100%</td> + <td>960px</td> + <td>1140px</td> + </tr> + <tr> + <td><code>.container-xl</code></td> + <td class="text-muted">100%</td> + <td class="text-muted">100%</td> + <td class="text-muted">100%</td> + <td class="text-muted">100%</td> + <td>1140px</td> + </tr> + <tr> + <td><code>.container-fluid</code></td> + <td class="text-muted">100%</td> + <td class="text-muted">100%</td> + <td class="text-muted">100%</td> + <td class="text-muted">100%</td> + <td class="text-muted">100%</td> + </tr> + </tbody> +</table> + +### All-in-one + +Our default `.container` class is a responsive, fixed-width container, meaning its `max-width` changes at each breakpoint. + +{% highlight html %} +<div class="container"> + <!-- Content here --> +</div> +{% endhighlight %} + +### Fluid + +Use `.container-fluid` for a full width container, spanning the entire width of the viewport. + +{% highlight html %} +<div class="container-fluid"> + ... +</div> +{% endhighlight %} + +### Responsive + +Responsive containers are new in Bootstrap v4.4. They allow you to specify a class that is 100% wide until the specified breakpoint is reached, after which we apply `max-width`s for each of the higher breakpoints. For example, `.container-sm` is 100% wide to start until the `sm` breakpoint is reached, where it will scale up with `md`, `lg`, and `xl`. + +{% highlight html %} +<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> +{% endhighlight %} + +## Responsive breakpoints + +Since Bootstrap is developed to be mobile first, we use a handful of [media queries](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries) to create sensible breakpoints for our layouts and interfaces. These breakpoints are mostly based on minimum viewport widths and allow us to scale up elements as the viewport changes. + +Bootstrap primarily uses the following media query ranges—or breakpoints—in our source Sass files for our layout, grid system, and components. + +{% highlight scss %} +// 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) { ... } +{% endhighlight %} + +Since we write our source CSS in Sass, all our media queries are available via Sass mixins: + +{% highlight scss %} +// 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; + } +} +{% endhighlight %} + +We occasionally use media queries that go in the other direction (the given screen size *or smaller*): + +{% highlight scss %} +// 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 +{% endhighlight %} + +{% include callout-info-mediaqueries-breakpoints.md %} + +Once again, these media queries are also available via Sass mixins: + +{% highlight scss %} +@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; + } +} +{% endhighlight %} + +There are also media queries and mixins for targeting a single segment of screen sizes using the minimum and maximum breakpoint widths. + +{% highlight scss %} +// 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) { ... } +{% endhighlight %} + +These media queries are also available via Sass mixins: + +{% highlight scss %} +@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) { ... } +{% endhighlight %} + +Similarly, media queries may span multiple breakpoint widths: + +{% highlight scss %} +// Example +// Apply styles starting from medium devices and up to extra large devices +@media (min-width: 768px) and (max-width: 1199.98px) { ... } +{% endhighlight %} + +The Sass mixin for targeting the same screen size range would be: + +{% highlight scss %} +@include media-breakpoint-between(md, xl) { ... } +{% endhighlight %} + +## Z-index + +Several Bootstrap components utilize `z-index`, the CSS property that helps control layout by providing a third axis to arrange content. We utilize a default z-index scale in Bootstrap that's been designed to properly layer navigation, tooltips and popovers, modals, and more. + +These higher values start at an arbitrary number, high and specific enough to ideally avoid conflicts. We need a standard set of these across our layered components—tooltips, popovers, navbars, dropdowns, modals—so we can be reasonably consistent in the behaviors. There's no reason we couldn't have used `100`+ or `500`+. + +We don't encourage customization of these individual values; should you change one, you likely need to change them all. + +{% highlight scss %} +$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; +{% endhighlight %} + +To handle overlapping borders within components (e.g., buttons and inputs in input groups), we use low single digit `z-index` values of `1`, `2`, and `3` for default, hover, and active states. On hover/focus/active, we bring a particular element to the forefront with a higher `z-index` value to show their border over the sibling elements. |