aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorGijs Boddeus <[email protected]>2017-10-04 08:46:03 +0200
committerGitHub <[email protected]>2017-10-04 08:46:03 +0200
commit263190305e1208b183611fe511ea8f983932a00d (patch)
tree8cc874b98d5d9e7d9db66b078d94e5dc1db2c4e8 /docs
parentcc092272eefa0e89bebfc716c8df8214d2804c77 (diff)
parent682ad1fff58fb6586dceaf31d490aaa522110e59 (diff)
downloadbootstrap-263190305e1208b183611fe511ea8f983932a00d.tar.xz
bootstrap-263190305e1208b183611fe511ea8f983932a00d.zip
Merge branch 'v4-dev' into yiq-function-update
Diffstat (limited to 'docs')
-rw-r--r--docs/4.0/about/history.md3
-rw-r--r--docs/4.0/components/alerts.md2
-rw-r--r--docs/4.0/components/badge.md4
-rw-r--r--docs/4.0/components/breadcrumb.md1
-rw-r--r--docs/4.0/components/button-group.md1
-rw-r--r--docs/4.0/components/card.md4
-rw-r--r--docs/4.0/components/collapse.md4
-rw-r--r--docs/4.0/components/dropdowns.md4
-rw-r--r--docs/4.0/components/forms.md17
-rw-r--r--docs/4.0/components/input-group.md2
-rw-r--r--docs/4.0/components/modal.md6
-rw-r--r--docs/4.0/components/navbar.md4
-rw-r--r--docs/4.0/components/navs.md166
-rw-r--r--docs/4.0/components/popovers.md8
-rw-r--r--docs/4.0/components/scrollspy.md4
-rw-r--r--docs/4.0/components/tooltips.md4
-rw-r--r--docs/4.0/content/images.md12
-rw-r--r--docs/4.0/content/reboot.md2
-rw-r--r--docs/4.0/content/typography.md10
-rw-r--r--docs/4.0/examples/album/index.html160
-rw-r--r--docs/4.0/examples/blog/blog.css8
-rw-r--r--docs/4.0/examples/blog/index.html44
-rw-r--r--docs/4.0/examples/carousel/carousel.css4
-rw-r--r--docs/4.0/examples/carousel/index.html264
-rw-r--r--docs/4.0/examples/cover/cover.css9
-rw-r--r--docs/4.0/examples/cover/index.html16
-rw-r--r--docs/4.0/examples/dashboard/dashboard.css6
-rw-r--r--docs/4.0/examples/dashboard/index.html58
-rw-r--r--docs/4.0/examples/grid/index.html2
-rw-r--r--docs/4.0/examples/index.md3
-rw-r--r--docs/4.0/examples/jumbotron/index.html66
-rw-r--r--docs/4.0/examples/justified-nav/index.html54
-rw-r--r--docs/4.0/examples/justified-nav/justified-nav.css11
-rw-r--r--docs/4.0/examples/narrow-jumbotron/index.html54
-rw-r--r--docs/4.0/examples/narrow-jumbotron/narrow-jumbotron.css3
-rw-r--r--docs/4.0/examples/navbar-top-fixed/index.html6
-rw-r--r--docs/4.0/examples/navbar-top/index.html6
-rw-r--r--docs/4.0/examples/navbars/index.html22
-rw-r--r--docs/4.0/examples/navbars/navbar.css1
-rw-r--r--docs/4.0/examples/offcanvas/index.html12
-rw-r--r--docs/4.0/examples/offcanvas/offcanvas.css16
-rw-r--r--docs/4.0/examples/offcanvas/offcanvas.js8
-rw-r--r--docs/4.0/examples/signin/index.html2
-rw-r--r--docs/4.0/examples/signin/signin.css5
-rw-r--r--docs/4.0/examples/starter-template/index.html6
-rw-r--r--docs/4.0/examples/sticky-footer-navbar/index.html56
-rw-r--r--docs/4.0/examples/sticky-footer/index.html6
-rw-r--r--docs/4.0/examples/sticky-footer/sticky-footer.css6
-rw-r--r--docs/4.0/examples/tooltip-viewport/index.html18
-rw-r--r--docs/4.0/examples/tooltip-viewport/tooltip-viewport.js24
-rw-r--r--docs/4.0/extend/icons.md2
-rw-r--r--docs/4.0/extend/index.md2
-rw-r--r--docs/4.0/getting-started/best-practices.md1
-rw-r--r--docs/4.0/getting-started/browsers-devices.md5
-rw-r--r--docs/4.0/getting-started/build-tools.md6
-rw-r--r--docs/4.0/getting-started/download.md12
-rw-r--r--docs/4.0/getting-started/introduction.md29
-rw-r--r--docs/4.0/getting-started/javascript.md3
-rw-r--r--docs/4.0/getting-started/options.md115
-rw-r--r--docs/4.0/getting-started/theming.md287
-rw-r--r--docs/4.0/getting-started/webpack.md2
-rw-r--r--docs/4.0/layout/grid.md87
-rw-r--r--docs/4.0/migration.md7
-rw-r--r--docs/4.0/utilities/clearfix.md4
-rw-r--r--docs/4.0/utilities/colors.md14
-rw-r--r--docs/4.0/utilities/spacing.md1
-rw-r--r--docs/4.0/utilities/text.md1
67 files changed, 1018 insertions, 774 deletions
diff --git a/docs/4.0/about/history.md b/docs/4.0/about/history.md
index 0b5de7776..b535f35d3 100644
--- a/docs/4.0/about/history.md
+++ b/docs/4.0/about/history.md
@@ -2,8 +2,7 @@
layout: docs
title: History
description: A brief overview of the history of Bootstrap.
-redirect_from:
- - /docs/4.0/about/
+redirect_from: "/docs/4.0/about/"
group: about
---
diff --git a/docs/4.0/components/alerts.md b/docs/4.0/components/alerts.md
index 90c146362..b8bb0c216 100644
--- a/docs/4.0/components/alerts.md
+++ b/docs/4.0/components/alerts.md
@@ -59,10 +59,10 @@ You can see this in action with a live demo:
{% example html %}
<div class="alert alert-warning alert-dismissible fade show" role="alert">
+ <strong>Holy guacamole!</strong> You should check in on some of those fields below.
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
- <strong>Holy guacamole!</strong> You should check in on some of those fields below.
</div>
{% endexample %}
diff --git a/docs/4.0/components/badge.md b/docs/4.0/components/badge.md
index 3ea58bbe8..c42d948d6 100644
--- a/docs/4.0/components/badge.md
+++ b/docs/4.0/components/badge.md
@@ -31,7 +31,7 @@ Badges scale to match the size of the immediate parent element by using relative
Badges can be used as part of links or buttons to provide a counter.
{% example html %}
-<button class="btn btn-primary">
+<button type="button" class="btn btn-primary">
Notifications <span class="badge badge-light">4</span>
</button>
{% endexample %}
@@ -41,7 +41,7 @@ Note that depending on how they are used, badges may be confusing for users of s
Unless the context is clear (as with the "Notifications" example, where it is understood that the "4" is the number of notifications), consider including additional context with a visually hidden piece of additional text.
{% example html %}
-<button class="btn btn-primary">
+<button type="button" class="btn btn-primary">
Profile <span class="badge badge-light">9</span>
<span class="sr-only">unread messages</span>
</button>
diff --git a/docs/4.0/components/breadcrumb.md b/docs/4.0/components/breadcrumb.md
index 7a4b5f44e..09ad73127 100644
--- a/docs/4.0/components/breadcrumb.md
+++ b/docs/4.0/components/breadcrumb.md
@@ -4,6 +4,7 @@ title: Breadcrumb
description: Indicate the current page's location within a navigational hierarchy that automatically adds separators via CSS.
group: components
---
+
## Overview
Separators are automatically added in CSS through [`::before`](https://developer.mozilla.org/en-US/docs/Web/CSS/::before) and [`content`](https://developer.mozilla.org/en-US/docs/Web/CSS/content).
diff --git a/docs/4.0/components/button-group.md b/docs/4.0/components/button-group.md
index 42c1cce1b..8fea3de90 100644
--- a/docs/4.0/components/button-group.md
+++ b/docs/4.0/components/button-group.md
@@ -25,6 +25,7 @@ In order for assistive technologies (such as screen readers) to convey that a se
In addition, groups and toolbars should be given an explicit label, as most assistive technologies will otherwise not announce them, despite the presence of the correct role attribute. In the examples provided here, we use `aria-label`, but alternatives such as `aria-labelledby` can also be used.
{% endcallout %}
+
## Button toolbar
Combine sets of button groups into button toolbars for more complex components. Use utility classes as needed to space out groups, buttons, and more.
diff --git a/docs/4.0/components/card.md b/docs/4.0/components/card.md
index a833d931f..9db9bc3c9 100644
--- a/docs/4.0/components/card.md
+++ b/docs/4.0/components/card.md
@@ -560,7 +560,7 @@ Just like with card groups, card footers in decks will automatically line up.
### Card columns
-Cards can be organized into [Masonry](http://masonry.desandro.com)-like columns with just CSS by wrapping them in `.card-columns`. Cards are built with CSS `column` properties instead of flexbox for easier alignment. Cards are ordered from top to bottom and left to right.
+Cards can be organized into [Masonry](https://masonry.desandro.com/)-like columns with just CSS by wrapping them in `.card-columns`. Cards are built with CSS `column` properties instead of flexbox for easier alignment. Cards are ordered from top to bottom and left to right.
**Heads up!** Your mileage with card columns may vary. To prevent cards breaking across columns, we must set them to `display: inline-block` as `column-break-inside: avoid` isn't a bulletproof solution yet.
@@ -591,7 +591,7 @@ Cards can be organized into [Masonry](http://masonry.desandro.com)-like columns
<p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
</div>
</div>
- <div class="card bg-primary p-3 text-center">
+ <div class="card bg-primary text-white text-center p-3">
<blockquote class="blockquote mb-0">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat.</p>
<footer class="blockquote-footer">
diff --git a/docs/4.0/components/collapse.md b/docs/4.0/components/collapse.md
index 2797658e5..536cc177f 100644
--- a/docs/4.0/components/collapse.md
+++ b/docs/4.0/components/collapse.md
@@ -186,9 +186,9 @@ Options can be passed via data attributes or JavaScript. For data attributes, ap
<tbody>
<tr>
<td>parent</td>
- <td>selector</td>
+ <td>selector | jQuery object | DOM element </td>
<td>false</td>
- <td>If a selector is provided, then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior - this is dependent on the <code>card</code> class). The attribute has to be set on the target collapsible area.</td>
+ <td>If parent is provided, then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior - this is dependent on the <code>card</code> class). The attribute has to be set on the target collapsible area.</td>
</tr>
<tr>
<td>toggle</td>
diff --git a/docs/4.0/components/dropdowns.md b/docs/4.0/components/dropdowns.md
index b01636615..d38b410c7 100644
--- a/docs/4.0/components/dropdowns.md
+++ b/docs/4.0/components/dropdowns.md
@@ -10,7 +10,7 @@ toc: true
Dropdowns are toggleable, contextual overlays for displaying lists of links and more. They're made interactive with the included Bootstrap dropdown JavaScript plugin. They're toggled by clicking, not by hovering; this is [an intentional design decision.](http://markdotto.com/2012/02/27/bootstrap-explained-dropdowns/)
-Dropdowns are built on a third party library, [Popper.js](https://popper.js.org), which provides dynamic positioning and viewport detection. Be sure to include [popper.min.js]({{ site.cdn.popper }}) before Bootstrap's JavaScript or use `bootstrap.bundle.min.js` / `bootstrap.bundle.js` which contains Popper.js.
+Dropdowns are built on a third party library, [Popper.js](https://popper.js.org/), which provides dynamic positioning and viewport detection. Be sure to include [popper.min.js]({{ site.cdn.popper }}) before Bootstrap's JavaScript or use `bootstrap.bundle.min.js` / `bootstrap.bundle.js` which contains Popper.js.
If you're building our JS from source, it [requires `util.js`]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/javascript/#util).
@@ -588,7 +588,7 @@ Options can be passed via data attributes or JavaScript. For data attributes, ap
<tbody>
<tr>
<td>offset</td>
- <td>number | string</td>
+ <td>number | string | function</td>
<td>0</td>
<td>Offset of the dropdown relative to its target. For more information refer to Popper.js's <a href="https://popper.js.org/popper-documentation.html#modifiers..offset.offset">offset docs</a>.</td>
</tr>
diff --git a/docs/4.0/components/forms.md b/docs/4.0/components/forms.md
index d2ca3bb73..ed4d95b70 100644
--- a/docs/4.0/components/forms.md
+++ b/docs/4.0/components/forms.md
@@ -672,7 +672,7 @@ While Bootstrap will apply these styles in all browsers, Internet Explorer 11 an
## Validation
-Provide valuable, actionable feedback to your users with HTML5 form validation–[available in all our supported browsers](http://caniuse.com/#feat=form-validation). Choose from the browser default validation feedback, or implement custom messages with our built-in classes and starter JavaScript.
+Provide valuable, actionable feedback to your users with HTML5 form validation–[available in all our supported browsers](https://caniuse.com/#feat=form-validation). Choose from the browser default validation feedback, or implement custom messages with our built-in classes and starter JavaScript.
{% callout warning %}
We **highly recommend** custom validation styles as native browser defaults are not announced to screen readers.
@@ -739,18 +739,19 @@ When attempting to submit, you'll see the `:invalid` and `:valid` styles applied
<script>
// Example starter JavaScript for disabling form submissions if there are invalid fields
(function() {
- "use strict";
- window.addEventListener("load", function() {
- var form = document.getElementById("needs-validation");
- form.addEventListener("submit", function(event) {
- if (form.checkValidity() == false) {
+ 'use strict';
+
+ window.addEventListener('load', function() {
+ var form = document.getElementById('needs-validation');
+ form.addEventListener('submit', function(event) {
+ if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
- form.classList.add("was-validated");
+ form.classList.add('was-validated');
}, false);
}, false);
-}());
+})();
</script>
{% endexample %}
diff --git a/docs/4.0/components/input-group.md b/docs/4.0/components/input-group.md
index de7322307..231adc906 100644
--- a/docs/4.0/components/input-group.md
+++ b/docs/4.0/components/input-group.md
@@ -132,7 +132,7 @@ Buttons in input groups must wrapped in a `.input-group-btn` for proper alignmen
</div>
<br>
<div class="row">
- <div class="col-lg-offset-3 col-lg-6">
+ <div class="col-lg-6 offset-lg-3">
<div class="input-group">
<span class="input-group-btn">
<button class="btn btn-secondary" type="button">Hate it</button>
diff --git a/docs/4.0/components/modal.md b/docs/4.0/components/modal.md
index 139e09ffa..491bd3fb8 100644
--- a/docs/4.0/components/modal.md
+++ b/docs/4.0/components/modal.md
@@ -32,7 +32,7 @@ Keep reading for demos and usage guidelines.
Below is a _static_ modal example (meaning its `position` and `display` have been overridden). Included are the modal header, modal body (required for `padding`), and modal footer (optional). We ask that you include modal headers with dismiss actions whenever possible, or provide another explicit dismiss action.
<div class="bd-example bd-example-modal">
- <div class="modal">
+ <div class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
@@ -54,7 +54,7 @@ Below is a _static_ modal example (meaning its `position` and `display` have bee
</div>
{% highlight html %}
-<div class="modal">
+<div class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
@@ -422,7 +422,7 @@ Modals have two optional sizes, available via modifier classes to be placed on a
{% highlight html %}
<!-- Large modal -->
-<button class="btn btn-primary" data-toggle="modal" data-target=".bd-example-modal-lg">Large modal</button>
+<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bd-example-modal-lg">Large modal</button>
<div class="modal fade bd-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
diff --git a/docs/4.0/components/navbar.md b/docs/4.0/components/navbar.md
index 72eb28ce7..f303aa2bc 100644
--- a/docs/4.0/components/navbar.md
+++ b/docs/4.0/components/navbar.md
@@ -323,7 +323,7 @@ Theming the navbar has never been easier thanks to the combination of theming cl
</ul>
<form class="form-inline">
<input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
- <button class="btn btn-outline-secondary my-2 my-sm-0" type="submit">Search</button>
+ <button class="btn btn-outline-light my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</nav>
@@ -395,7 +395,7 @@ When the container is within your navbar, its horizontal padding is removed at b
## Placement
-Use our position utilities to place navbars in non-static positions. Choose from fixed to the top, fixed to the bottom, or stickied to the top. **Note that `position: sticky`, used for `.sticky-top`, [isn't fully supported in every browser](http://caniuse.com/#feat=css-sticky).**
+Use our position utilities to place navbars in non-static positions. Choose from fixed to the top, fixed to the bottom, or stickied to the top. **Note that `position: sticky`, used for `.sticky-top`, [isn't fully supported in every browser](https://caniuse.com/#feat=css-sticky).**
{% example html %}
<nav class="navbar navbar-light bg-light">
diff --git a/docs/4.0/components/navs.md b/docs/4.0/components/navs.md
index a9fb5268b..b34f79c2f 100644
--- a/docs/4.0/components/navs.md
+++ b/docs/4.0/components/navs.md
@@ -301,22 +301,18 @@ If you're building our JS from source, it [requires `util.js`]({{ site.baseurl }
Dynamic tabbed interfaces, as described in the [<abbr title="Web Accessibility Initiative">WAI</abbr> <abbr title="Accessible Rich Internet Applications">ARIA</abbr> Authoring Practices](https://www.w3.org/TR/wai-aria-practices/#tabpanel), require `role="tablist"`, `role="tab"`, `role="tabpanel"`, and additional `aria-` attributes in order to convey their structure, functionality and current state to users of assistive technologies (such as screen readers).
+Note that dynamic tabbed interfaces should <em>not</em> contain dropdown menus, as this causes both usability and accessibility issues. From a usability perspective, the fact that the currently displayed tab's trigger element is not immediately visible (as it's inside the closed dropdown menu) can cause confusion. From an accessibility point of view, there is currently no sensible way to map this sort of construct to a standard WAI ARIA pattern, meaning that it cannot be easily made understandable to users of assistive technologies.
+
<div class="bd-example bd-example-tabs">
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item">
- <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-expanded="true">Home</a>
+ <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-selected="true">Home</a>
</li>
<li class="nav-item">
- <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile">Profile</a>
+ <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile" aria-selected="false">Profile</a>
</li>
- <li class="nav-item dropdown">
- <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
- Dropdown
- </a>
- <div class="dropdown-menu">
- <a class="dropdown-item" id="dropdown1-tab" href="#dropdown1" role="tab" data-toggle="tab" aria-controls="dropdown1">@fat</a>
- <a class="dropdown-item" id="dropdown2-tab" href="#dropdown2" role="tab" data-toggle="tab" aria-controls="dropdown2">@mdo</a>
- </div>
+ <li class="nav-item">
+ <a class="nav-link" id="contact-tab" data-toggle="tab" href="#contact" role="tab" aria-controls="contact" aria-selected="false">Contact</a>
</li>
</ul>
<div class="tab-content" id="myTabContent">
@@ -326,38 +322,28 @@ Dynamic tabbed interfaces, as described in the [<abbr title="Web Accessibility I
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
<p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.</p>
</div>
- <div class="tab-pane fade" id="dropdown1" role="tabpanel" aria-labelledby="dropdown1-tab">
+ <div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">
<p>Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.</p>
</div>
- <div class="tab-pane fade" id="dropdown2" role="tabpanel" aria-labelledby="dropdown2-tab">
- <p>Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.</p>
- </div>
</div>
</div>
{% highlight html %}
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item">
- <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-expanded="true">Home</a>
+ <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-selected="true">Home</a>
</li>
<li class="nav-item">
- <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile">Profile</a>
+ <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile" aria-selected="false">Profile</a>
</li>
- <li class="nav-item dropdown">
- <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
- Dropdown
- </a>
- <div class="dropdown-menu">
- <a class="dropdown-item" id="dropdown1-tab" href="#dropdown1" role="tab" data-toggle="tab" aria-controls="dropdown1">@fat</a>
- <a class="dropdown-item" id="dropdown2-tab" href="#dropdown2" role="tab" data-toggle="tab" aria-controls="dropdown2">@mdo</a>
- </div>
+ <li class="nav-item">
+ <a class="nav-link" id="contact-tab" data-toggle="tab" href="#contact" role="tab" aria-controls="contact" aria-selected="false">Contact</a>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">...</div>
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div>
- <div class="tab-pane fade" id="dropdown1" role="tabpanel" aria-labelledby="dropdown1-tab">...</div>
- <div class="tab-pane fade" id="dropdown2" role="tabpanel" aria-labelledby="dropdown2-tab">...</div>
+ <div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">...</div>
</div>
{% endhighlight %}
@@ -365,17 +351,9 @@ To help fit your needs, this works with `<ul>`-based markup, as shown above, as
<div class="bd-example bd-example-tabs">
<nav class="nav nav-tabs" id="nav-tab" role="tablist">
- <a class="nav-item nav-link active" id="nav-home-tab" data-toggle="tab" href="#nav-home" role="tab" aria-controls="home" aria-expanded="true">Home</a>
- <a class="nav-item nav-link" id="nav-profile-tab" data-toggle="tab" href="#nav-profile" role="tab" aria-controls="profile">Profile</a>
- <div class="dropdown">
- <a class="nav-item nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
- Dropdown
- </a>
- <div class="dropdown-menu">
- <a class="dropdown-item" id="nav-dropdown1-tab" href="#nav-dropdown1" role="tab" data-toggle="tab" aria-controls="dropdown1">@fat</a>
- <a class="dropdown-item" id="nav-dropdown2-tab" href="#nav-dropdown2" role="tab" data-toggle="tab" aria-controls="dropdown2">@mdo</a>
- </div>
- </div>
+ <a class="nav-item nav-link active" id="nav-home-tab" data-toggle="tab" href="#nav-home" role="tab" aria-controls="nav-home" aria-selected="true">Home</a>
+ <a class="nav-item nav-link" id="nav-profile-tab" data-toggle="tab" href="#nav-profile" role="tab" aria-controls="nav-profile" aria-selected="false">Profile</a>
+ <a class="nav-item nav-link" id="nav-contact-tab" data-toggle="tab" href="#nav-contact" role="tab" aria-controls="nav-contact" aria-selected="false">Contact</a>
</nav>
<div class="tab-content" id="nav-tabContent">
<div class="tab-pane fade show active" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab">
@@ -384,34 +362,22 @@ To help fit your needs, this works with `<ul>`-based markup, as shown above, as
<div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab">
<p>Nulla est ullamco ut irure incididunt nulla Lorem Lorem minim irure officia enim reprehenderit. Magna duis labore cillum sint adipisicing exercitation ipsum. Nostrud ut anim non exercitation velit laboris fugiat cupidatat. Commodo esse dolore fugiat sint velit ullamco magna consequat voluptate minim amet aliquip ipsum aute laboris nisi. Labore labore veniam irure irure ipsum pariatur mollit magna in cupidatat dolore magna irure esse tempor ad mollit. Dolore commodo nulla minim amet ipsum officia consectetur amet ullamco voluptate nisi commodo ea sit eu.</p>
</div>
- <div class="tab-pane fade" id="nav-dropdown1" role="tabpanel" aria-labelledby="nav-dropdown1-tab">
+ <div class="tab-pane fade" id="nav-contact" role="tabpanel" aria-labelledby="nav-contact-tab">
<p>Sint sit mollit irure quis est nostrud cillum consequat Lorem esse do quis dolor esse fugiat sunt do. Eu ex commodo veniam Lorem aliquip laborum occaecat qui Lorem esse mollit dolore anim cupidatat. Deserunt officia id Lorem nostrud aute id commodo elit eiusmod enim irure amet eiusmod qui reprehenderit nostrud tempor. Fugiat ipsum excepteur in aliqua non et quis aliquip ad irure in labore cillum elit enim. Consequat aliquip incididunt ipsum et minim laborum laborum laborum et cillum labore. Deserunt adipisicing cillum id nulla minim nostrud labore eiusmod et amet. Laboris consequat consequat commodo non ut non aliquip reprehenderit nulla anim occaecat. Sunt sit ullamco reprehenderit irure ea ullamco Lorem aute nostrud magna.</p>
</div>
- <div class="tab-pane fade" id="nav-dropdown2" role="tabpanel" aria-labelledby="nav-dropdown2-tab">
- <p>Proident incididunt esse qui ea nisi ullamco aliquip nostrud velit sint duis. Aute culpa aute cillum sit consectetur mollit minim non reprehenderit tempor. Occaecat amet consectetur aute esse ad ullamco ad commodo mollit reprehenderit esse in consequat. Mollit minim do consectetur pariatur irure non id ea dolore occaecat adipisicing consectetur est aute magna non.</p>
- </div>
</div>
</div>
{% highlight html %}
<nav class="nav nav-tabs" id="myTab" role="tablist">
- <a class="nav-item nav-link active" id="nav-home-tab" data-toggle="tab" href="#nav-home" role="tab" aria-controls="nav-home" aria-expanded="true">Home</a>
- <a class="nav-item nav-link" id="nav-profile-tab" data-toggle="tab" href="#nav-profile" role="tab" aria-controls="nav-profile">Profile</a>
- <div class="dropdown">
- <a class="nav-item nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
- Dropdown
- </a>
- <div class="dropdown-menu">
- <a class="dropdown-item" id="nav-dropdown1-tab" href="#nav-dropdown1" role="tab" data-toggle="tab" aria-controls="nav-dropdown1">@fat</a>
- <a class="dropdown-item" id="nav-dropdown2-tab" href="#nav-dropdown2" role="tab" data-toggle="tab" aria-controls="nav-dropdown2">@mdo</a>
- </div>
- </div>
+ <a class="nav-item nav-link active" id="nav-home-tab" data-toggle="tab" href="#nav-home" role="tab" aria-controls="nav-home" aria-selected="true">Home</a>
+ <a class="nav-item nav-link" id="nav-profile-tab" data-toggle="tab" href="#nav-profile" role="tab" aria-controls="nav-profile" aria-selected="false">Profile</a>
+ <a class="nav-item nav-link" id="nav-contact-tab" data-toggle="tab" href="#nav-contact" role="tab" aria-controls="nav-contact" aria-selected="false">Contact</a>
</nav>
<div class="tab-content" id="nav-tabContent">
<div class="tab-pane fade show active" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab">...</div>
<div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab">...</div>
- <div class="tab-pane fade" id="nav-dropdown1" role="tabpanel" aria-labelledby="nav-dropdown1-tab">...</div>
- <div class="tab-pane fade" id="nav-dropdown2" role="tabpanel" aria-labelledby="nav-dropdown2-tab">...</div>
+ <div class="tab-pane fade" id="nav-contact" role="tabpanel" aria-labelledby="nav-contact-tab">...</div>
</div>
{% endhighlight %}
@@ -420,17 +386,13 @@ The tabs plugin also works with pills.
<div class="bd-example bd-example-tabs">
<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
<li class="nav-item">
- <a class="nav-link active" id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-expanded="true">Home</a>
+ <a class="nav-link active" id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-selected="true">Home</a>
</li>
<li class="nav-item">
- <a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-profile" role="tab" aria-controls="pills-profile" aria-expanded="true">Profile</a>
+ <a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-profile" role="tab" aria-controls="pills-profile" aria-selected="false">Profile</a>
</li>
- <li class="nav-item dropdown">
- <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
- <div class="dropdown-menu">
- <a class="dropdown-item" id="pills-dropdown1-tab" href="#pills-dropdown1" role="tab" data-toggle="pill" aria-controls="pills-dropdown1">@fat</a>
- <a class="dropdown-item" id="pills-dropdown2-tab" href="#pills-dropdown2" role="tab" data-toggle="pill" aria-controls="pills-dropdown2">@mdo</a>
- </div>
+ <li class="nav-item">
+ <a class="nav-link" id="pills-contact-tab" data-toggle="pill" href="#pills-contact" role="tab" aria-controls="pills-contact" aria-selected="false">Contact</a>
</li>
</ul>
<div class="tab-content" id="pills-tabContent">
@@ -440,36 +402,28 @@ The tabs plugin also works with pills.
<div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">
<p>Ad pariatur nostrud pariatur exercitation ipsum ipsum culpa mollit commodo mollit ex. Aute sunt incididunt amet commodo est sint nisi deserunt pariatur do. Aliquip ex eiusmod voluptate exercitation cillum id incididunt elit sunt. Qui minim sit magna Lorem id et dolore velit Lorem amet exercitation duis deserunt. Anim id labore elit adipisicing ut in id occaecat pariatur ut ullamco ea tempor duis.</p>
</div>
- <div class="tab-pane fade" id="pills-dropdown1" role="tabpanel" aria-labelledby="pills-dropdown1-tab">
+ <div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab">
<p>Est quis nulla laborum officia ad nisi ex nostrud culpa Lorem excepteur aliquip dolor aliqua irure ex. Nulla ut duis ipsum nisi elit fugiat commodo sunt reprehenderit laborum veniam eu veniam. Eiusmod minim exercitation fugiat irure ex labore incididunt do fugiat commodo aliquip sit id deserunt reprehenderit aliquip nostrud. Amet ex cupidatat excepteur aute veniam incididunt mollit cupidatat esse irure officia elit do ipsum ullamco Lorem. Ullamco ut ad minim do mollit labore ipsum laboris ipsum commodo sunt tempor enim incididunt. Commodo quis sunt dolore aliquip aute tempor irure magna enim minim reprehenderit. Ullamco consectetur culpa veniam sint cillum aliqua incididunt velit ullamco sunt ullamco quis quis commodo voluptate. Mollit nulla nostrud adipisicing aliqua cupidatat aliqua pariatur mollit voluptate voluptate consequat non.</p>
</div>
- <div class="tab-pane fade" id="pills-dropdown2" role="tabpanel" aria-labelledby="nav-dropdown2-tab">
- <p>Tempor anim aliquip qui nisi sit minim ex in cupidatat ipsum adipisicing. Ad non magna anim id ullamco do dolor sit adipisicing nulla exercitation. Qui Lorem eiusmod sint in laboris pariatur est adipisicing non sunt occaecat in mollit culpa sit. Aliquip id duis do do quis mollit ut duis. Non dolor reprehenderit do esse nostrud deserunt non eiusmod minim anim sit voluptate ipsum. Nulla elit aliqua do sunt labore velit anim nisi dolor nostrud consectetur fugiat ex qui velit ex tempor. Do cillum qui anim aliquip id cillum duis ex laboris tempor incididunt sint dolor ullamco tempor. Fugiat laboris enim anim veniam aliquip cillum irure.</p>
- </div>
</div>
</div>
{% highlight html %}
<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
<li class="nav-item">
- <a class="nav-link active" id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-expanded="true">Home</a>
+ <a class="nav-link active" id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-selected="true">Home</a>
</li>
<li class="nav-item">
- <a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-profile" role="tab" aria-controls="pills-profile" aria-expanded="true">Profile</a>
+ <a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-profile" role="tab" aria-controls="pills-profile" aria-selected="false">Profile</a>
</li>
- <li class="nav-item dropdown">
- <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
- <div class="dropdown-menu">
- <a class="dropdown-item" id="pills-dropdown1-tab" href="#pills-dropdown1" role="tab" data-toggle="pill" aria-controls="pills-dropdown1">@fat</a>
- <a class="dropdown-item" id="pills-dropdown2-tab" href="#pills-dropdown2" role="tab" data-toggle="pill" aria-controls="pills-dropdown2">@mdo</a>
- </div>
+ <li class="nav-item">
+ <a class="nav-link" id="pills-contact-tab" data-toggle="pill" href="#pills-contact" role="tab" aria-controls="pills-contact" aria-selected="false">Contact</a>
</li>
</ul>
<div class="tab-content" id="pills-tabContent">
<div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">...</div>
<div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">...</div>
- <div class="tab-pane fade" id="pills-dropdown1" role="tabpanel" aria-labelledby="pills-dropdown1-tab">...</div>
- <div class="tab-pane fade" id="pills-dropdown2" role="tabpanel" aria-labelledby="pills-dropdown2-tab">...</div>
+ <div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab">...</div>
</div>
{% endhighlight %}
@@ -478,11 +432,11 @@ And with vertical pills.
<div class="bd-example bd-example-tabs">
<div class="row">
<div class="col-3">
- <div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist">
- <a class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-expanded="true">Home</a>
- <a class="nav-link" id="v-pills-profile-tab" data-toggle="pill" href="#v-pills-profile" role="tab" aria-controls="v-pills-profile" aria-expanded="true">Profile</a>
- <a class="nav-link" id="v-pills-messages-tab" data-toggle="pill" href="#v-pills-messages" role="tab" aria-controls="v-pills-messages" aria-expanded="true">Messages</a>
- <a class="nav-link" id="v-pills-settings-tab" data-toggle="pill" href="#v-pills-settings" role="tab" aria-controls="v-pills-settings" aria-expanded="true">Settings</a>
+ <div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
+ <a class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-selected="true">Home</a>
+ <a class="nav-link" id="v-pills-profile-tab" data-toggle="pill" href="#v-pills-profile" role="tab" aria-controls="v-pills-profile" aria-selected="false">Profile</a>
+ <a class="nav-link" id="v-pills-messages-tab" data-toggle="pill" href="#v-pills-messages" role="tab" aria-controls="v-pills-messages" aria-selected="false">Messages</a>
+ <a class="nav-link" id="v-pills-settings-tab" data-toggle="pill" href="#v-pills-settings" role="tab" aria-controls="v-pills-settings" aria-selected="false">Settings</a>
</div>
</div>
<div class="col-9">
@@ -505,11 +459,11 @@ And with vertical pills.
</div>
{% highlight html %}
-<div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist">
- <a class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-expanded="true">Home</a>
- <a class="nav-link" id="v-pills-profile-tab" data-toggle="pill" href="#v-pills-profile" role="tab" aria-controls="v-pills-profile" aria-expanded="true">Profile</a>
- <a class="nav-link" id="v-pills-messages-tab" data-toggle="pill" href="#v-pills-messages" role="tab" aria-controls="v-pills-messages" aria-expanded="true">Messages</a>
- <a class="nav-link" id="v-pills-settings-tab" data-toggle="pill" href="#v-pills-settings" role="tab" aria-controls="v-pills-settings" aria-expanded="true">Settings</a>
+<div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
+ <a class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-selected="true">Home</a>
+ <a class="nav-link" id="v-pills-profile-tab" data-toggle="pill" href="#v-pills-profile" role="tab" aria-controls="v-pills-profile" aria-selected="false">Profile</a>
+ <a class="nav-link" id="v-pills-messages-tab" data-toggle="pill" href="#v-pills-messages" role="tab" aria-controls="v-pills-messages" aria-selected="false">Messages</a>
+ <a class="nav-link" id="v-pills-settings-tab" data-toggle="pill" href="#v-pills-settings" role="tab" aria-controls="v-pills-settings" aria-selected="false">Settings</a>
</div>
<div class="tab-content" id="v-pills-tabContent">
<div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab">...</div>
@@ -527,25 +481,25 @@ You can activate a tab or pill navigation without writing any JavaScript by simp
<!-- Nav tabs -->
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item">
- <a class="nav-link active" data-toggle="tab" href="#home" role="tab">Home</a>
+ <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-selected="true">Home</a>
</li>
<li class="nav-item">
- <a class="nav-link" data-toggle="tab" href="#profile" role="tab">Profile</a>
+ <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile" aria-selected="false">Profile</a>
</li>
<li class="nav-item">
- <a class="nav-link" data-toggle="tab" href="#messages" role="tab">Messages</a>
+ <a class="nav-link" id="messages-tab" data-toggle="tab" href="#messages" role="tab" aria-controls="messages" aria-selected="false">Messages</a>
</li>
<li class="nav-item">
- <a class="nav-link" data-toggle="tab" href="#settings" role="tab">Settings</a>
+ <a class="nav-link" id="settings-tab" data-toggle="tab" href="#settings" role="tab" aria-controls="settings" aria-selected="false">Settings</a>
</li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
- <div class="tab-pane active" id="home" role="tabpanel">...</div>
- <div class="tab-pane" id="profile" role="tabpanel">...</div>
- <div class="tab-pane" id="messages" role="tabpanel">...</div>
- <div class="tab-pane" id="settings" role="tabpanel">...</div>
+ <div class="tab-pane active" id="home" role="tabpanel" aria-labelledby="home-tab">...</div>
+ <div class="tab-pane" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div>
+ <div class="tab-pane" id="messages" role="tabpanel" aria-labelledby="messages-tab">...</div>
+ <div class="tab-pane" id="settings" role="tabpanel" aria-labelledby="settings-tab">...</div>
</div>
{% endhighlight %}
@@ -575,10 +529,10 @@ To make tabs fade in, add `.fade` to each `.tab-pane`. The first tab pane must a
{% highlight html %}
<div class="tab-content">
- <div class="tab-pane fade show active" id="home" role="tabpanel">...</div>
- <div class="tab-pane fade" id="profile" role="tabpanel">...</div>
- <div class="tab-pane fade" id="messages" role="tabpanel">...</div>
- <div class="tab-pane fade" id="settings" role="tabpanel">...</div>
+ <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">...</div>
+ <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div>
+ <div class="tab-pane fade" id="messages" role="tabpanel" aria-labelledby="messages-tab">...</div>
+ <div class="tab-pane fade" id="settings" role="tabpanel" aria-labelledby="settings-tab">...</div>
</div>
{% endhighlight %}
@@ -594,24 +548,24 @@ Activates a tab element and content container. Tab should have either a `data-ta
{% highlight html %}
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item">
- <a class="nav-link active" data-toggle="tab" href="#home" role="tab" aria-controls="home">Home</a>
+ <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-selected="true">Home</a>
</li>
<li class="nav-item">
- <a class="nav-link" data-toggle="tab" href="#profile" role="tab" aria-controls="profile">Profile</a>
+ <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile" aria-selected="false">Profile</a>
</li>
<li class="nav-item">
- <a class="nav-link" data-toggle="tab" href="#messages" role="tab" aria-controls="messages">Messages</a>
+ <a class="nav-link" id="messages-tab" data-toggle="tab" href="#messages" role="tab" aria-controls="messages" aria-selected="false">Messages</a>
</li>
<li class="nav-item">
- <a class="nav-link" data-toggle="tab" href="#settings" role="tab" aria-controls="settings">Settings</a>
+ <a class="nav-link" id="settings-tab" data-toggle="tab" href="#settings" role="tab" aria-controls="settings" aria-selected="false">Settings</a>
</li>
</ul>
<div class="tab-content">
- <div class="tab-pane active" id="home" role="tabpanel">...</div>
- <div class="tab-pane" id="profile" role="tabpanel">...</div>
- <div class="tab-pane" id="messages" role="tabpanel">...</div>
- <div class="tab-pane" id="settings" role="tabpanel">...</div>
+ <div class="tab-pane active" id="home" role="tabpanel" aria-labelledby="home-tab">...</div>
+ <div class="tab-pane" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div>
+ <div class="tab-pane" id="messages" role="tabpanel" aria-labelledby="messages-tab">...</div>
+ <div class="tab-pane" id="settings" role="tabpanel" aria-labelledby="settings-tab">...</div>
</div>
<script>
diff --git a/docs/4.0/components/popovers.md b/docs/4.0/components/popovers.md
index 0a4bb363c..b8356b0d2 100644
--- a/docs/4.0/components/popovers.md
+++ b/docs/4.0/components/popovers.md
@@ -11,7 +11,7 @@ toc: true
Things to know when using the popover plugin:
-- Popovers rely on the 3rd party library [Popper.js](https://popper.js.org) for positioning. You must include [popper.min.js]({{ site.cdn.popper }}) before bootstrap.js or use `bootstrap.bundle.min.js` / `bootstrap.bundle.js` which contains Popper.js in order for popovers to work!
+- Popovers rely on the 3rd party library [Popper.js](https://popper.js.org/) for positioning. You must include [popper.min.js]({{ site.cdn.popper }}) before bootstrap.js or use `bootstrap.bundle.min.js` / `bootstrap.bundle.js` which contains Popper.js in order for popovers to work!
- Popovers require the [tooltip plugin]({{ site.baseurl }}/docs/{{ site.docs_version }}/components/tooltips/) as a dependency.
- If building our JS from source, it [requires `util.js`]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/javascript/#util).
- Popovers are opt-in for performance reasons, so **you must initialize them yourself**.
@@ -151,7 +151,6 @@ $('.popover-dismiss').popover({
{% endhighlight %}
-
## Usage
Enable popovers via JavaScript:
@@ -180,7 +179,7 @@ Options can be passed via data attributes or JavaScript. For data attributes, ap
</tr>
<tr>
<td>container</td>
- <td>string | false</td>
+ <td>string | element | false</td>
<td>false</td>
<td>
<p>Appends the popover to a specific element. Example: <code>container: 'body'</code>. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize.</p>
@@ -222,7 +221,7 @@ Options can be passed via data attributes or JavaScript. For data attributes, ap
</tr>
<tr>
<td>selector</td>
- <td>string</td>
+ <td>string | false</td>
<td>false</td>
<td>If a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have popovers added. See <a href="https://github.com/twbs/bootstrap/issues/4215">this</a> and <a href="https://jsbin.com/zopod/1/edit">an informative example</a>.</td>
</tr>
@@ -306,7 +305,6 @@ Toggles an element's popover. **Returns to the caller before the popover has act
Hides and destroys an element's popover. Popovers that use delegation (which are created using [the `selector` option](#options)) cannot be individually destroyed on descendant trigger elements.
-
{% highlight js %}$('#element').popover('dispose'){% endhighlight %}
#### `.popover('enable')`
diff --git a/docs/4.0/components/scrollspy.md b/docs/4.0/components/scrollspy.md
index 32a86d839..b7f9e994f 100644
--- a/docs/4.0/components/scrollspy.md
+++ b/docs/4.0/components/scrollspy.md
@@ -316,13 +316,13 @@ Options can be passed via data attributes or JavaScript. For data attributes, ap
<tbody>
<tr>
<td>activate.bs.scrollspy</td>
- <td>This event fires whenever a new item becomes activated by the scrollspy.</td>
+ <td>This event fires on the scroll element whenever a new item becomes activated by the scrollspy.</td>
</tr>
</tbody>
</table>
{% highlight js %}
-$('#myScrollspy').on('activate.bs.scrollspy', function () {
+$('[data-spy="scroll"]').on('activate.bs.scrollspy', function () {
// do something…
})
{% endhighlight %}
diff --git a/docs/4.0/components/tooltips.md b/docs/4.0/components/tooltips.md
index ada21e8cc..d3598048d 100644
--- a/docs/4.0/components/tooltips.md
+++ b/docs/4.0/components/tooltips.md
@@ -10,7 +10,7 @@ toc: true
Things to know when using the tooltip plugin:
-- Tooltips rely on the 3rd party library [Popper.js](https://popper.js.org) for positioning. You must include [popper.min.js]({{ site.cdn.popper }}) before bootstrap.js or use `bootstrap.bundle.min.js` / `bootstrap.bundle.js` which contains Popper.js in order for tooltips to work!
+- Tooltips rely on the 3rd party library [Popper.js](https://popper.js.org/) for positioning. You must include [popper.min.js]({{ site.cdn.popper }}) before bootstrap.js or use `bootstrap.bundle.min.js` / `bootstrap.bundle.js` which contains Popper.js in order for tooltips to work!
- If building our JS from source, it [requires `util.js`]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/javascript/#util).
- Tooltips are opt-in for performance reasons, so **you must initialize them yourself**.
- Tooltips with zero-length titles are never displayed.
@@ -201,7 +201,7 @@ Options can be passed via data attributes or JavaScript. For data attributes, ap
</tr>
<tr>
<td>selector</td>
- <td>string</td>
+ <td>string | false</td>
<td>false</td>
<td>If a selector is provided, tooltip objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have popovers added. See <a href="https://github.com/twbs/bootstrap/issues/4215">this</a> and <a href="https://jsbin.com/zopod/1/edit">an informative example</a>.</td>
</tr>
diff --git a/docs/4.0/content/images.md b/docs/4.0/content/images.md
index 0bcbe3a03..4601dcc6d 100644
--- a/docs/4.0/content/images.md
+++ b/docs/4.0/content/images.md
@@ -69,3 +69,15 @@ Align images with the [helper float classes]({{ site.baseurl }}/docs/{{ site.doc
<img src="..." class="rounded" alt="...">
</div>
{% endhighlight %}
+
+
+## Picture
+
+If you are using the `<picture>` element to specify multiple `<source>` elements for a specific `<img>`, make sure to add the `.img-*` classes to the `<img>` and not to the `<picture>` tag.
+
+{% highlight html %}
+​<picture>
+ <source srcset="..." type="image/svg+xml">
+ <img src="..." class="img-fluid img-thumbnail" alt="...">
+</picture>
+{% endhighlight %}
diff --git a/docs/4.0/content/reboot.md b/docs/4.0/content/reboot.md
index f69d2519e..58d6b201b 100644
--- a/docs/4.0/content/reboot.md
+++ b/docs/4.0/content/reboot.md
@@ -330,7 +330,7 @@ The `<abbr>` element receives basic styling to make it stand out amongst paragra
## HTML5 `[hidden]` attribute
-HTML5 adds [a new global attribute named `[hidden]`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden), which is styled as `display: none` by default. Borrowing an idea from [PureCSS](https://purecss.io), we improve upon this default by making `[hidden] { display: none !important; }` to help prevent its `display` from getting accidentally overridden. While `[hidden]` isn't natively supported by IE10, the explicit declaration in our CSS gets around that problem.
+HTML5 adds [a new global attribute named `[hidden]`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden), which is styled as `display: none` by default. Borrowing an idea from [PureCSS](https://purecss.io/), we improve upon this default by making `[hidden] { display: none !important; }` to help prevent its `display` from getting accidentally overridden. While `[hidden]` isn't natively supported by IE10, the explicit declaration in our CSS gets around that problem.
{% highlight html %}
<input type="text" hidden>
diff --git a/docs/4.0/content/typography.md b/docs/4.0/content/typography.md
index 74ecbe614..d76070889 100644
--- a/docs/4.0/content/typography.md
+++ b/docs/4.0/content/typography.md
@@ -16,7 +16,7 @@ Bootstrap sets basic global display, typography, and link styles. When more cont
- Set the global link color via `$link-color` and apply link underlines only on `:hover`.
- Use `$body-bg` to set a `background-color` on the `<body>` (`#fff` by default).
-These styles can be found within `_reboot.scss`, and the global variables are defined in `_variables.scss`.
+These styles can be found within `_reboot.scss`, and the global variables are defined in `_variables.scss`. Make sure to set `$font-size-base` in `rem`.
## Headings
@@ -297,24 +297,24 @@ Here's an example of it in practice. Choose whatever `font-size`s and media quer
{% highlight scss %}
html {
- font-size: 14px;
+ font-size: 1rem;
}
@include media-breakpoint-up(sm) {
html {
- font-size: 16px;
+ font-size: 1.2rem;
}
}
@include media-breakpoint-up(md) {
html {
- font-size: 20px;
+ font-size: 1.4rem;
}
}
@include media-breakpoint-up(lg) {
html {
- font-size: 28px;
+ font-size: 1.6rem;
}
}
{% endhighlight %}
diff --git a/docs/4.0/examples/album/index.html b/docs/4.0/examples/album/index.html
index 6723e53fb..f704b3f05 100644
--- a/docs/4.0/examples/album/index.html
+++ b/docs/4.0/examples/album/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -18,90 +18,96 @@
<body>
- <div class="collapse bg-dark" id="navbarHeader">
- <div class="container">
- <div class="row">
- <div class="col-sm-8 py-4">
- <h4 class="text-white">About</h4>
- <p class="text-muted">Add some information about the album below, the author, or any other background context. Make it a few sentences long so folks can pick up some informative tidbits. Then, link them off to some social networking sites or contact information.</p>
- </div>
- <div class="col-sm-4 py-4">
- <h4 class="text-white">Contact</h4>
- <ul class="list-unstyled">
- <li><a href="#" class="text-white">Follow on Twitter</a></li>
- <li><a href="#" class="text-white">Like on Facebook</a></li>
- <li><a href="#" class="text-white">Email me</a></li>
- </ul>
+ <header>
+ <div class="collapse bg-dark" id="navbarHeader">
+ <div class="container">
+ <div class="row">
+ <div class="col-sm-8 py-4">
+ <h4 class="text-white">About</h4>
+ <p class="text-muted">Add some information about the album below, the author, or any other background context. Make it a few sentences long so folks can pick up some informative tidbits. Then, link them off to some social networking sites or contact information.</p>
+ </div>
+ <div class="col-sm-4 py-4">
+ <h4 class="text-white">Contact</h4>
+ <ul class="list-unstyled">
+ <li><a href="#" class="text-white">Follow on Twitter</a></li>
+ <li><a href="#" class="text-white">Like on Facebook</a></li>
+ <li><a href="#" class="text-white">Email me</a></li>
+ </ul>
+ </div>
</div>
</div>
</div>
- </div>
- <div class="navbar navbar-dark bg-dark">
- <div class="container d-flex justify-content-between">
- <a href="#" class="navbar-brand">Album</a>
- <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarHeader" aria-controls="navbarHeader" aria-expanded="false" aria-label="Toggle navigation">
- <span class="navbar-toggler-icon"></span>
- </button>
+ <div class="navbar navbar-dark bg-dark">
+ <div class="container d-flex justify-content-between">
+ <a href="#" class="navbar-brand">Album</a>
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarHeader" aria-controls="navbarHeader" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+ </div>
</div>
- </div>
+ </header>
- <section class="jumbotron text-center">
- <div class="container">
- <h1 class="jumbotron-heading">Album example</h1>
- <p class="lead text-muted">Something short and leading about the collection below—its contents, the creator, etc. Make it short and sweet, but not too short so folks don't simply skip over it entirely.</p>
- <p>
- <a href="#" class="btn btn-primary">Main call to action</a>
- <a href="#" class="btn btn-secondary">Secondary action</a>
- </p>
- </div>
- </section>
+ <main role="main">
- <div class="album text-muted">
- <div class="container">
+ <section class="jumbotron text-center">
+ <div class="container">
+ <h1 class="jumbotron-heading">Album example</h1>
+ <p class="lead text-muted">Something short and leading about the collection below—its contents, the creator, etc. Make it short and sweet, but not too short so folks don't simply skip over it entirely.</p>
+ <p>
+ <a href="#" class="btn btn-primary">Main call to action</a>
+ <a href="#" class="btn btn-secondary">Secondary action</a>
+ </p>
+ </div>
+ </section>
- <div class="row">
- <div class="card">
- <img data-src="holder.js/100px280/thumb" alt="Card image cap">
- <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
- </div>
- <div class="card">
- <img data-src="holder.js/100px280/thumb" alt="Card image cap">
- <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
- </div>
- <div class="card">
- <img data-src="holder.js/100px280/thumb" alt="Card image cap">
- <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
- </div>
+ <div class="album text-muted">
+ <div class="container">
- <div class="card">
- <img data-src="holder.js/100px280/thumb" alt="Card image cap">
- <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
- </div>
- <div class="card">
- <img data-src="holder.js/100px280/thumb" alt="Card image cap">
- <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
- </div>
- <div class="card">
- <img data-src="holder.js/100px280/thumb" alt="Card image cap">
- <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
- </div>
+ <div class="row">
+ <div class="card">
+ <img data-src="holder.js/100px280?theme=thumb" alt="Card image cap">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ </div>
+ <div class="card">
+ <img data-src="holder.js/100px280?theme=thumb" alt="Card image cap">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ </div>
+ <div class="card">
+ <img data-src="holder.js/100px280?theme=thumb" alt="Card image cap">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ </div>
- <div class="card">
- <img data-src="holder.js/100px280/thumb" alt="Card image cap">
- <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
- </div>
- <div class="card">
- <img data-src="holder.js/100px280/thumb" alt="Card image cap">
- <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
- </div>
- <div class="card">
- <img data-src="holder.js/100px280/thumb" alt="Card image cap">
- <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ <div class="card">
+ <img data-src="holder.js/100px280?theme=thumb" alt="Card image cap">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ </div>
+ <div class="card">
+ <img data-src="holder.js/100px280?theme=thumb" alt="Card image cap">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ </div>
+ <div class="card">
+ <img data-src="holder.js/100px280?theme=thumb" alt="Card image cap">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ </div>
+
+ <div class="card">
+ <img data-src="holder.js/100px280?theme=thumb" alt="Card image cap">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ </div>
+ <div class="card">
+ <img data-src="holder.js/100px280?theme=thumb" alt="Card image cap">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ </div>
+ <div class="card">
+ <img data-src="holder.js/100px280?theme=thumb" alt="Card image cap">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ </div>
</div>
- </div>
+ </div>
</div>
- </div>
+
+ </main>
<footer class="text-muted">
<div class="container">
@@ -119,12 +125,14 @@
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script>window.jQuery || document.write('<script src="../../../../assets/js/vendor/jquery.min.js"><\/script>')</script>
<script src="../../../../assets/js/vendor/popper.min.js"></script>
+ <script src="../../../../dist/js/bootstrap.min.js"></script>
<script src="../../../../assets/js/vendor/holder.min.js"></script>
<script>
- $(function () {
- Holder.addTheme("thumb", { background: "#55595c", foreground: "#eceeef", text: "Thumbnail" });
+ Holder.addTheme('thumb', {
+ bg: '#55595c',
+ fg: '#eceeef',
+ text: 'Thumbnail'
});
</script>
- <script src="../../../../dist/js/bootstrap.min.js"></script>
</body>
</html>
diff --git a/docs/4.0/examples/blog/blog.css b/docs/4.0/examples/blog/blog.css
index 18db4290e..6eda0a7b1 100644
--- a/docs/4.0/examples/blog/blog.css
+++ b/docs/4.0/examples/blog/blog.css
@@ -20,7 +20,7 @@ h4, .h4,
h5, .h5,
h6, .h6 {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-weight: normal;
+ font-weight: 400;
color: #333;
}
@@ -41,8 +41,7 @@ h6, .h6 {
.blog-masthead {
margin-bottom: 3rem;
background-color: #428bca;
- -webkit-box-shadow: inset 0 -.1rem .25rem rgba(0,0,0,.1);
- box-shadow: inset 0 -.1rem .25rem rgba(0,0,0,.1);
+ box-shadow: inset 0 -.1rem .25rem rgba(0,0,0,.1);
}
/* Nav links */
@@ -89,7 +88,7 @@ h6, .h6 {
.blog-title {
margin-bottom: 0;
font-size: 2rem;
- font-weight: normal;
+ font-weight: 400;
}
.blog-description {
font-size: 1.1rem;
@@ -110,7 +109,6 @@ h6, .h6 {
/* Sidebar modules for boxing content */
.sidebar-module {
padding: 1rem;
- /*margin: 0 -1rem 1rem;*/
}
.sidebar-module-inset {
padding: 1rem;
diff --git a/docs/4.0/examples/blog/index.html b/docs/4.0/examples/blog/index.html
index a021d7afa..2257cef95 100644
--- a/docs/4.0/examples/blog/index.html
+++ b/docs/4.0/examples/blog/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -18,26 +18,28 @@
<body>
- <div class="blog-masthead">
- <div class="container">
- <nav class="nav">
- <a class="nav-link active" href="#">Home</a>
- <a class="nav-link" href="#">New features</a>
- <a class="nav-link" href="#">Press</a>
- <a class="nav-link" href="#">New hires</a>
- <a class="nav-link" href="#">About</a>
- </nav>
+ <header>
+ <div class="blog-masthead">
+ <div class="container">
+ <nav class="nav">
+ <a class="nav-link active" href="#">Home</a>
+ <a class="nav-link" href="#">New features</a>
+ <a class="nav-link" href="#">Press</a>
+ <a class="nav-link" href="#">New hires</a>
+ <a class="nav-link" href="#">About</a>
+ </nav>
+ </div>
</div>
- </div>
- <div class="blog-header">
- <div class="container">
- <h1 class="blog-title">The Bootstrap Blog</h1>
- <p class="lead blog-description">An example blog template built with Bootstrap.</p>
+ <div class="blog-header">
+ <div class="container">
+ <h1 class="blog-title">The Bootstrap Blog</h1>
+ <p class="lead blog-description">An example blog template built with Bootstrap.</p>
+ </div>
</div>
- </div>
+ </header>
- <div class="container">
+ <main role="main" class="container">
<div class="row">
@@ -109,7 +111,7 @@
</div><!-- /.blog-main -->
- <div class="col-sm-3 ml-sm-auto blog-sidebar">
+ <aside class="col-sm-3 ml-sm-auto blog-sidebar">
<div class="sidebar-module sidebar-module-inset">
<h4>About</h4>
<p>Etiam porta <em>sem malesuada magna</em> mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p>
@@ -139,14 +141,14 @@
<li><a href="#">Facebook</a></li>
</ol>
</div>
- </div><!-- /.blog-sidebar -->
+ </aside><!-- /.blog-sidebar -->
</div><!-- /.row -->
- </div><!-- /.container -->
+ </main><!-- /.container -->
<footer class="blog-footer">
- <p>Blog template built for <a href="https://getbootstrap.com">Bootstrap</a> by <a href="https://twitter.com/mdo">@mdo</a>.</p>
+ <p>Blog template built for <a href="https://getbootstrap.com/">Bootstrap</a> by <a href="https://twitter.com/mdo">@mdo</a>.</p>
<p>
<a href="#">Back to top</a>
</p>
diff --git a/docs/4.0/examples/carousel/carousel.css b/docs/4.0/examples/carousel/carousel.css
index 5fbdea52e..f9b5a7e49 100644
--- a/docs/4.0/examples/carousel/carousel.css
+++ b/docs/4.0/examples/carousel/carousel.css
@@ -18,8 +18,8 @@ body {
}
/* Since positioning the image, we need to help out the caption */
.carousel-caption {
- z-index: 10;
bottom: 3rem;
+ z-index: 10;
}
/* Declare heights because of positioning of img element */
@@ -45,7 +45,7 @@ body {
text-align: center;
}
.marketing h2 {
- font-weight: normal;
+ font-weight: 400;
}
.marketing .col-lg-4 p {
margin-right: .75rem;
diff --git a/docs/4.0/examples/carousel/index.html b/docs/4.0/examples/carousel/index.html
index 7d4a6ea22..32bc81e5c 100644
--- a/docs/4.0/examples/carousel/index.html
+++ b/docs/4.0/examples/carousel/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -17,158 +17,164 @@
</head>
<body>
- <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
- <a class="navbar-brand" href="#">Carousel</a>
- <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
- <span class="navbar-toggler-icon"></span>
- </button>
- <div class="collapse navbar-collapse" id="navbarCollapse">
- <ul class="navbar-nav mr-auto">
- <li class="nav-item active">
- <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
- </li>
- <li class="nav-item">
- <a class="nav-link" href="#">Link</a>
- </li>
- <li class="nav-item">
- <a class="nav-link disabled" href="#">Disabled</a>
- </li>
- </ul>
- <form class="form-inline mt-2 mt-md-0">
- <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
- <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
- </form>
- </div>
- </nav>
-
- <div id="myCarousel" class="carousel slide" data-ride="carousel">
- <ol class="carousel-indicators">
- <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
- <li data-target="#myCarousel" data-slide-to="1"></li>
- <li data-target="#myCarousel" data-slide-to="2"></li>
- </ol>
- <div class="carousel-inner">
- <div class="carousel-item active">
- <img class="first-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="First slide">
- <div class="container">
- <div class="carousel-caption text-left">
- <h1>Example headline.</h1>
- <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
- <p><a class="btn btn-lg btn-primary" href="#" role="button">Sign up today</a></p>
+ <header>
+ <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
+ <a class="navbar-brand" href="#">Carousel</a>
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarCollapse">
+ <ul class="navbar-nav mr-auto">
+ <li class="nav-item active">
+ <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" href="#">Link</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link disabled" href="#">Disabled</a>
+ </li>
+ </ul>
+ <form class="form-inline mt-2 mt-md-0">
+ <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
+ <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
+ </form>
+ </div>
+ </nav>
+ </header>
+
+ <main role="main">
+
+ <div id="myCarousel" class="carousel slide" data-ride="carousel">
+ <ol class="carousel-indicators">
+ <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
+ <li data-target="#myCarousel" data-slide-to="1"></li>
+ <li data-target="#myCarousel" data-slide-to="2"></li>
+ </ol>
+ <div class="carousel-inner">
+ <div class="carousel-item active">
+ <img class="first-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="First slide">
+ <div class="container">
+ <div class="carousel-caption text-left">
+ <h1>Example headline.</h1>
+ <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
+ <p><a class="btn btn-lg btn-primary" href="#" role="button">Sign up today</a></p>
+ </div>
</div>
</div>
- </div>
- <div class="carousel-item">
- <img class="second-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Second slide">
- <div class="container">
- <div class="carousel-caption">
- <h1>Another example headline.</h1>
- <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
- <p><a class="btn btn-lg btn-primary" href="#" role="button">Learn more</a></p>
+ <div class="carousel-item">
+ <img class="second-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Second slide">
+ <div class="container">
+ <div class="carousel-caption">
+ <h1>Another example headline.</h1>
+ <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
+ <p><a class="btn btn-lg btn-primary" href="#" role="button">Learn more</a></p>
+ </div>
</div>
</div>
- </div>
- <div class="carousel-item">
- <img class="third-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Third slide">
- <div class="container">
- <div class="carousel-caption text-right">
- <h1>One more for good measure.</h1>
- <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
- <p><a class="btn btn-lg btn-primary" href="#" role="button">Browse gallery</a></p>
+ <div class="carousel-item">
+ <img class="third-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Third slide">
+ <div class="container">
+ <div class="carousel-caption text-right">
+ <h1>One more for good measure.</h1>
+ <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
+ <p><a class="btn btn-lg btn-primary" href="#" role="button">Browse gallery</a></p>
+ </div>
</div>
</div>
</div>
- </div>
- <a class="carousel-control-prev" href="#myCarousel" role="button" data-slide="prev">
- <span class="carousel-control-prev-icon" aria-hidden="true"></span>
- <span class="sr-only">Previous</span>
- </a>
- <a class="carousel-control-next" href="#myCarousel" role="button" data-slide="next">
- <span class="carousel-control-next-icon" aria-hidden="true"></span>
- <span class="sr-only">Next</span>
- </a>
- </div>
-
-
- <!-- Marketing messaging and featurettes
- ================================================== -->
- <!-- Wrap the rest of the page in another container to center all the content. -->
-
- <div class="container marketing">
-
- <!-- Three columns of text below the carousel -->
- <div class="row">
- <div class="col-lg-4">
- <img class="rounded-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
- <h2>Heading</h2>
- <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p>
- <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
- </div><!-- /.col-lg-4 -->
- <div class="col-lg-4">
- <img class="rounded-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
- <h2>Heading</h2>
- <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh.</p>
- <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
- </div><!-- /.col-lg-4 -->
- <div class="col-lg-4">
- <img class="rounded-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
- <h2>Heading</h2>
- <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
- <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
- </div><!-- /.col-lg-4 -->
- </div><!-- /.row -->
-
-
- <!-- START THE FEATURETTES -->
-
- <hr class="featurette-divider">
-
- <div class="row featurette">
- <div class="col-md-7">
- <h2 class="featurette-heading">First featurette heading. <span class="text-muted">It'll blow your mind.</span></h2>
- <p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
- </div>
- <div class="col-md-5">
- <img class="featurette-image img-fluid mx-auto" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
- </div>
+ <a class="carousel-control-prev" href="#myCarousel" role="button" data-slide="prev">
+ <span class="carousel-control-prev-icon" aria-hidden="true"></span>
+ <span class="sr-only">Previous</span>
+ </a>
+ <a class="carousel-control-next" href="#myCarousel" role="button" data-slide="next">
+ <span class="carousel-control-next-icon" aria-hidden="true"></span>
+ <span class="sr-only">Next</span>
+ </a>
</div>
- <hr class="featurette-divider">
- <div class="row featurette">
- <div class="col-md-7 order-md-2">
- <h2 class="featurette-heading">Oh yeah, it's that good. <span class="text-muted">See for yourself.</span></h2>
- <p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
- </div>
- <div class="col-md-5 order-md-1">
- <img class="featurette-image img-fluid mx-auto" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
+ <!-- Marketing messaging and featurettes
+ ================================================== -->
+ <!-- Wrap the rest of the page in another container to center all the content. -->
+
+ <div class="container marketing">
+
+ <!-- Three columns of text below the carousel -->
+ <div class="row">
+ <div class="col-lg-4">
+ <img class="rounded-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
+ <h2>Heading</h2>
+ <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p>
+ <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
+ </div><!-- /.col-lg-4 -->
+ <div class="col-lg-4">
+ <img class="rounded-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
+ <h2>Heading</h2>
+ <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh.</p>
+ <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
+ </div><!-- /.col-lg-4 -->
+ <div class="col-lg-4">
+ <img class="rounded-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
+ <h2>Heading</h2>
+ <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
+ <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
+ </div><!-- /.col-lg-4 -->
+ </div><!-- /.row -->
+
+
+ <!-- START THE FEATURETTES -->
+
+ <hr class="featurette-divider">
+
+ <div class="row featurette">
+ <div class="col-md-7">
+ <h2 class="featurette-heading">First featurette heading. <span class="text-muted">It'll blow your mind.</span></h2>
+ <p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
+ </div>
+ <div class="col-md-5">
+ <img class="featurette-image img-fluid mx-auto" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
+ </div>
</div>
- </div>
- <hr class="featurette-divider">
+ <hr class="featurette-divider">
- <div class="row featurette">
- <div class="col-md-7">
- <h2 class="featurette-heading">And lastly, this one. <span class="text-muted">Checkmate.</span></h2>
- <p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
+ <div class="row featurette">
+ <div class="col-md-7 order-md-2">
+ <h2 class="featurette-heading">Oh yeah, it's that good. <span class="text-muted">See for yourself.</span></h2>
+ <p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
+ </div>
+ <div class="col-md-5 order-md-1">
+ <img class="featurette-image img-fluid mx-auto" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
+ </div>
</div>
- <div class="col-md-5">
- <img class="featurette-image img-fluid mx-auto" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
+
+ <hr class="featurette-divider">
+
+ <div class="row featurette">
+ <div class="col-md-7">
+ <h2 class="featurette-heading">And lastly, this one. <span class="text-muted">Checkmate.</span></h2>
+ <p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
+ </div>
+ <div class="col-md-5">
+ <img class="featurette-image img-fluid mx-auto" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
+ </div>
</div>
- </div>
- <hr class="featurette-divider">
+ <hr class="featurette-divider">
+
+ <!-- /END THE FEATURETTES -->
- <!-- /END THE FEATURETTES -->
+ </div><!-- /.container -->
<!-- FOOTER -->
- <footer>
+ <footer class="container">
<p class="float-right"><a href="#">Back to top</a></p>
<p>&copy; 2017 Company, Inc. &middot; <a href="#">Privacy</a> &middot; <a href="#">Terms</a></p>
</footer>
- </div><!-- /.container -->
+ </main>
<!-- Bootstrap core JavaScript
diff --git a/docs/4.0/examples/cover/cover.css b/docs/4.0/examples/cover/cover.css
index 8a89cde53..2b208671b 100644
--- a/docs/4.0/examples/cover/cover.css
+++ b/docs/4.0/examples/cover/cover.css
@@ -41,8 +41,7 @@ body {
width: 100%;
height: 100%; /* For at least Firefox */
min-height: 100%;
- -webkit-box-shadow: inset 0 0 5rem rgba(0,0,0,.5);
- box-shadow: inset 0 0 5rem rgba(0,0,0,.5);
+ box-shadow: inset 0 0 5rem rgba(0,0,0,.5);
}
.site-wrapper-inner {
display: table-cell;
@@ -73,7 +72,7 @@ body {
.nav-masthead .nav-link {
padding: .25rem 0;
- font-weight: bold;
+ font-weight: 700;
color: rgba(255,255,255,.5);
background-color: transparent;
border-bottom: .25rem solid transparent;
@@ -112,7 +111,7 @@ body {
}
.cover .btn-lg {
padding: .75rem 1.25rem;
- font-weight: bold;
+ font-weight: 700;
}
@@ -139,10 +138,12 @@ body {
position: fixed;
bottom: 0;
}
+
/* Start the vertical centering */
.site-wrapper-inner {
vertical-align: middle;
}
+
/* Handle the widths */
.masthead,
.mastfoot,
diff --git a/docs/4.0/examples/cover/index.html b/docs/4.0/examples/cover/index.html
index bc48f4cd0..47cbc3edf 100644
--- a/docs/4.0/examples/cover/index.html
+++ b/docs/4.0/examples/cover/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -24,7 +24,7 @@
<div class="cover-container">
- <div class="masthead clearfix">
+ <header class="masthead clearfix">
<div class="inner">
<h3 class="masthead-brand">Cover</h3>
<nav class="nav nav-masthead">
@@ -33,21 +33,21 @@
<a class="nav-link" href="#">Contact</a>
</nav>
</div>
- </div>
+ </header>
- <div class="inner cover">
+ <main role="main" class="inner cover">
<h1 class="cover-heading">Cover your page.</h1>
<p class="lead">Cover is a one-page template for building simple and beautiful home pages. Download, edit the text, and add your own fullscreen background photo to make it your own.</p>
<p class="lead">
<a href="#" class="btn btn-lg btn-secondary">Learn more</a>
</p>
- </div>
+ </main>
- <div class="mastfoot">
+ <footer class="mastfoot">
<div class="inner">
- <p>Cover template for <a href="https://getbootstrap.com">Bootstrap</a>, by <a href="https://twitter.com/mdo">@mdo</a>.</p>
+ <p>Cover template for <a href="https://getbootstrap.com/">Bootstrap</a>, by <a href="https://twitter.com/mdo">@mdo</a>.</p>
</div>
- </div>
+ </footer>
</div>
diff --git a/docs/4.0/examples/dashboard/dashboard.css b/docs/4.0/examples/dashboard/dashboard.css
index b1248cd68..a59005148 100644
--- a/docs/4.0/examples/dashboard/dashboard.css
+++ b/docs/4.0/examples/dashboard/dashboard.css
@@ -12,8 +12,8 @@ body {
*/
h1 {
- margin-bottom: 20px;
padding-bottom: 9px;
+ margin-bottom: 20px;
border-bottom: 1px solid #eee;
}
@@ -35,8 +35,8 @@ h1 {
/* Sidebar navigation */
.sidebar {
- padding-left: 0;
padding-right: 0;
+ padding-left: 0;
}
.sidebar .nav {
@@ -59,7 +59,7 @@ h1 {
* Dashboard
*/
- /* Placeholders */
+/* Placeholders */
.placeholders {
padding-bottom: 3rem;
}
diff --git a/docs/4.0/examples/dashboard/index.html b/docs/4.0/examples/dashboard/index.html
index 512564610..ece8fd595 100644
--- a/docs/4.0/examples/dashboard/index.html
+++ b/docs/4.0/examples/dashboard/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -17,33 +17,35 @@
</head>
<body>
- <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
- <a class="navbar-brand" href="#">Dashboard</a>
- <button class="navbar-toggler d-lg-none" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
- <span class="navbar-toggler-icon"></span>
- </button>
+ <header>
+ <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
+ <a class="navbar-brand" href="#">Dashboard</a>
+ <button class="navbar-toggler d-lg-none" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
- <div class="collapse navbar-collapse" id="navbarsExampleDefault">
- <ul class="navbar-nav mr-auto">
- <li class="nav-item active">
- <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
- </li>
- <li class="nav-item">
- <a class="nav-link" href="#">Settings</a>
- </li>
- <li class="nav-item">
- <a class="nav-link" href="#">Profile</a>
- </li>
- <li class="nav-item">
- <a class="nav-link" href="#">Help</a>
- </li>
- </ul>
- <form class="form-inline mt-2 mt-md-0">
- <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
- <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
- </form>
- </div>
- </nav>
+ <div class="collapse navbar-collapse" id="navbarsExampleDefault">
+ <ul class="navbar-nav mr-auto">
+ <li class="nav-item active">
+ <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" href="#">Settings</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" href="#">Profile</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" href="#">Help</a>
+ </li>
+ </ul>
+ <form class="form-inline mt-2 mt-md-0">
+ <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
+ <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
+ </form>
+ </div>
+ </nav>
+ </header>
<div class="container-fluid">
<div class="row">
@@ -91,7 +93,7 @@
</ul>
</nav>
- <main class="col-sm-9 ml-sm-auto col-md-10 pt-3" role="main">
+ <main role="main" class="col-sm-9 ml-sm-auto col-md-10 pt-3">
<h1>Dashboard</h1>
<section class="row text-center placeholders">
diff --git a/docs/4.0/examples/grid/index.html b/docs/4.0/examples/grid/index.html
index 68665f981..0be50f816 100644
--- a/docs/4.0/examples/grid/index.html
+++ b/docs/4.0/examples/grid/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
diff --git a/docs/4.0/examples/index.md b/docs/4.0/examples/index.md
index bec2f014c..344d5be30 100644
--- a/docs/4.0/examples/index.md
+++ b/docs/4.0/examples/index.md
@@ -2,8 +2,7 @@
layout: simple
title: Examples
description: Quickly get a project started with any of our examples ranging from using parts of the framework to custom components and layouts.
-redirect_from:
- - /examples/
+redirect_from: "/examples/"
---
[Download the Bootstrap source code]({{ site.download.source }}) to snag these examples.
diff --git a/docs/4.0/examples/jumbotron/index.html b/docs/4.0/examples/jumbotron/index.html
index ac0ae3a29..a6a64cd26 100644
--- a/docs/4.0/examples/jumbotron/index.html
+++ b/docs/4.0/examples/jumbotron/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -51,42 +51,46 @@
</div>
</nav>
- <!-- Main jumbotron for a primary marketing message or call to action -->
- <div class="jumbotron">
- <div class="container">
- <h1 class="display-3">Hello, world!</h1>
- <p>This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
- <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more &raquo;</a></p>
- </div>
- </div>
+ <main role="main">
- <div class="container">
- <!-- Example row of columns -->
- <div class="row">
- <div class="col-md-4">
- <h2>Heading</h2>
- <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
- <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
- </div>
- <div class="col-md-4">
- <h2>Heading</h2>
- <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
- <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
- </div>
- <div class="col-md-4">
- <h2>Heading</h2>
- <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
- <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
+ <!-- Main jumbotron for a primary marketing message or call to action -->
+ <div class="jumbotron">
+ <div class="container">
+ <h1 class="display-3">Hello, world!</h1>
+ <p>This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
+ <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more &raquo;</a></p>
</div>
</div>
- <hr>
+ <div class="container">
+ <!-- Example row of columns -->
+ <div class="row">
+ <div class="col-md-4">
+ <h2>Heading</h2>
+ <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
+ <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
+ </div>
+ <div class="col-md-4">
+ <h2>Heading</h2>
+ <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
+ <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
+ </div>
+ <div class="col-md-4">
+ <h2>Heading</h2>
+ <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
+ <p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
+ </div>
+ </div>
+
+ <hr>
+
+ </div> <!-- /container -->
- <footer>
- <p>&copy; Company 2017</p>
- </footer>
- </div> <!-- /container -->
+ </main>
+ <footer class="container">
+ <p>&copy; Company 2017</p>
+ </footer>
<!-- Bootstrap core JavaScript
================================================== -->
diff --git a/docs/4.0/examples/justified-nav/index.html b/docs/4.0/examples/justified-nav/index.html
index 84c241c1d..495332195 100644
--- a/docs/4.0/examples/justified-nav/index.html
+++ b/docs/4.0/examples/justified-nav/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -20,7 +20,7 @@
<div class="container">
- <div class="masthead">
+ <header class="masthead">
<h3 class="text-muted">Project name</h3>
<nav class="navbar navbar-expand-md navbar-light bg-light rounded mb-3">
@@ -55,33 +55,37 @@
</ul>
</div>
</nav>
- </div>
+ </header>
- <!-- Jumbotron -->
- <div class="jumbotron">
- <h1>Marketing stuff!</h1>
- <p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet.</p>
- <p><a class="btn btn-lg btn-success" href="#" role="button">Get started today</a></p>
- </div>
+ <main role="main">
- <!-- Example row of columns -->
- <div class="row">
- <div class="col-lg-4">
- <h2>Heading</h2>
- <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
- <p><a class="btn btn-primary" href="#" role="button">View details &raquo;</a></p>
+ <!-- Jumbotron -->
+ <div class="jumbotron">
+ <h1>Marketing stuff!</h1>
+ <p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet.</p>
+ <p><a class="btn btn-lg btn-success" href="#" role="button">Get started today</a></p>
</div>
- <div class="col-lg-4">
- <h2>Heading</h2>
- <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
- <p><a class="btn btn-primary" href="#" role="button">View details &raquo;</a></p>
- </div>
- <div class="col-lg-4">
- <h2>Heading</h2>
- <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa.</p>
- <p><a class="btn btn-primary" href="#" role="button">View details &raquo;</a></p>
+
+ <!-- Example row of columns -->
+ <div class="row">
+ <div class="col-lg-4">
+ <h2>Heading</h2>
+ <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
+ <p><a class="btn btn-primary" href="#" role="button">View details &raquo;</a></p>
+ </div>
+ <div class="col-lg-4">
+ <h2>Heading</h2>
+ <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
+ <p><a class="btn btn-primary" href="#" role="button">View details &raquo;</a></p>
+ </div>
+ <div class="col-lg-4">
+ <h2>Heading</h2>
+ <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa.</p>
+ <p><a class="btn btn-primary" href="#" role="button">View details &raquo;</a></p>
+ </div>
</div>
- </div>
+
+ </main>
<!-- Site footer -->
<footer class="footer">
diff --git a/docs/4.0/examples/justified-nav/justified-nav.css b/docs/4.0/examples/justified-nav/justified-nav.css
index 2f6de026e..0ca9aabb5 100644
--- a/docs/4.0/examples/justified-nav/justified-nav.css
+++ b/docs/4.0/examples/justified-nav/justified-nav.css
@@ -20,26 +20,19 @@ body {
}
.navbar {
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f7f7f7),to(#eee));
- background-image: -webkit-linear-gradient(top, #f7f7f7 0%,#eee 100%);
- background-image: -o-linear-gradient(top, #f7f7f7 0%,#eee 100%);
background-image: linear-gradient(to bottom, #f7f7f7 0%,#eee 100%);
border: 1px solid #e5e5e5;
}
@media (min-width: 768px) {
.navbar-nav {
- display: -webkit-box;
- display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
.navbar-nav .nav-item {
- -webkit-box-flex: 1;
- -webkit-flex: 1 0 auto;
- -ms-flex: 1 0 auto;
- flex: 1 0 auto;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
}
}
diff --git a/docs/4.0/examples/narrow-jumbotron/index.html b/docs/4.0/examples/narrow-jumbotron/index.html
index a1a5d1b64..19ef46506 100644
--- a/docs/4.0/examples/narrow-jumbotron/index.html
+++ b/docs/4.0/examples/narrow-jumbotron/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -19,7 +19,7 @@
<body>
<div class="container">
- <div class="header clearfix">
+ <header class="header clearfix">
<nav>
<ul class="nav nav-pills float-right">
<li class="nav-item">
@@ -34,37 +34,41 @@
</ul>
</nav>
<h3 class="text-muted">Project name</h3>
- </div>
+ </header>
- <div class="jumbotron">
- <h1 class="display-3">Jumbotron heading</h1>
- <p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
- <p><a class="btn btn-lg btn-success" href="#" role="button">Sign up today</a></p>
- </div>
+ <main role="main">
- <div class="row marketing">
- <div class="col-lg-6">
- <h4>Subheading</h4>
- <p>Donec id elit non mi porta gravida at eget metus. Maecenas faucibus mollis interdum.</p>
+ <div class="jumbotron">
+ <h1 class="display-3">Jumbotron heading</h1>
+ <p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
+ <p><a class="btn btn-lg btn-success" href="#" role="button">Sign up today</a></p>
+ </div>
- <h4>Subheading</h4>
- <p>Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum.</p>
+ <div class="row marketing">
+ <div class="col-lg-6">
+ <h4>Subheading</h4>
+ <p>Donec id elit non mi porta gravida at eget metus. Maecenas faucibus mollis interdum.</p>
- <h4>Subheading</h4>
- <p>Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
- </div>
+ <h4>Subheading</h4>
+ <p>Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum.</p>
- <div class="col-lg-6">
- <h4>Subheading</h4>
- <p>Donec id elit non mi porta gravida at eget metus. Maecenas faucibus mollis interdum.</p>
+ <h4>Subheading</h4>
+ <p>Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
+ </div>
- <h4>Subheading</h4>
- <p>Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum.</p>
+ <div class="col-lg-6">
+ <h4>Subheading</h4>
+ <p>Donec id elit non mi porta gravida at eget metus. Maecenas faucibus mollis interdum.</p>
- <h4>Subheading</h4>
- <p>Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
+ <h4>Subheading</h4>
+ <p>Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum.</p>
+
+ <h4>Subheading</h4>
+ <p>Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
+ </div>
</div>
- </div>
+
+ </main>
<footer class="footer">
<p>&copy; Company 2017</p>
diff --git a/docs/4.0/examples/narrow-jumbotron/narrow-jumbotron.css b/docs/4.0/examples/narrow-jumbotron/narrow-jumbotron.css
index 28cf77381..dc4cf6c21 100644
--- a/docs/4.0/examples/narrow-jumbotron/narrow-jumbotron.css
+++ b/docs/4.0/examples/narrow-jumbotron/narrow-jumbotron.css
@@ -17,6 +17,7 @@ body {
padding-bottom: 1rem;
border-bottom: .05rem solid #e5e5e5;
}
+
/* Make the masthead heading the same height as the navigation */
.header h3 {
margin-top: 0;
@@ -68,10 +69,12 @@ body {
padding-right: 0;
padding-left: 0;
}
+
/* Space out the masthead */
.header {
margin-bottom: 2rem;
}
+
/* Remove the bottom border on the jumbotron for visual effect */
.jumbotron {
border-bottom: 0;
diff --git a/docs/4.0/examples/navbar-top-fixed/index.html b/docs/4.0/examples/navbar-top-fixed/index.html
index 18b223fb9..54e56fc48 100644
--- a/docs/4.0/examples/navbar-top-fixed/index.html
+++ b/docs/4.0/examples/navbar-top-fixed/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -42,13 +42,13 @@
</div>
</nav>
- <div class="container">
+ <main role="main" class="container">
<div class="jumbotron">
<h1>Navbar example</h1>
<p class="lead">This example is a quick exercise to illustrate how fixed to top navbar works. As you scroll, it will remain fixed to the top of your browser's viewport.</p>
<a class="btn btn-lg btn-primary" href="../../components/navbar/" role="button">View navbar docs &raquo;</a>
</div>
- </div>
+ </main>
<!-- Bootstrap core JavaScript
diff --git a/docs/4.0/examples/navbar-top/index.html b/docs/4.0/examples/navbar-top/index.html
index e141f3b8c..3aeb45a8a 100644
--- a/docs/4.0/examples/navbar-top/index.html
+++ b/docs/4.0/examples/navbar-top/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -42,13 +42,13 @@
</div>
</nav>
- <div class="container">
+ <main role="main" class="container">
<div class="jumbotron">
<h1>Navbar example</h1>
<p class="lead">This example is a quick exercise to illustrate how the top-aligned navbar works. As you scroll, this navbar remains in its original position and moves with the rest of the page.</p>
<a class="btn btn-lg btn-primary" href="../../components/navbar/" role="button">View navbar docs &raquo;</a>
</div>
- </div>
+ </main>
<!-- Bootstrap core JavaScript
diff --git a/docs/4.0/examples/navbars/index.html b/docs/4.0/examples/navbars/index.html
index bad842040..297b8912f 100644
--- a/docs/4.0/examples/navbars/index.html
+++ b/docs/4.0/examples/navbars/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -322,16 +322,18 @@
</div>
</nav>
- <div class="jumbotron">
- <div class="col-sm-8 mx-auto">
- <h1>Navbar examples</h1>
- <p>This example is a quick exercise to illustrate how the navbar and its contents work. Some navbars extend the width of the viewport, others are confined within a <code>.container</code>. For positioning of navbars, checkout the <a href="../navbar-top/">top</a> and <a href="../navbar-top-fixed/">fixed top</a> examples.</p>
- <p>At the smallest breakpoint, the collapse plugin is used to hide the links and show a menu button to toggle the collapsed content.</p>
- <p>
- <a class="btn btn-primary" href="../../components/navbar/" role="button">View navbar docs &raquo;</a>
- </p>
+ <main role="main">
+ <div class="jumbotron">
+ <div class="col-sm-8 mx-auto">
+ <h1>Navbar examples</h1>
+ <p>This example is a quick exercise to illustrate how the navbar and its contents work. Some navbars extend the width of the viewport, others are confined within a <code>.container</code>. For positioning of navbars, checkout the <a href="../navbar-top/">top</a> and <a href="../navbar-top-fixed/">fixed top</a> examples.</p>
+ <p>At the smallest breakpoint, the collapse plugin is used to hide the links and show a menu button to toggle the collapsed content.</p>
+ <p>
+ <a class="btn btn-primary" href="../../components/navbar/" role="button">View navbar docs &raquo;</a>
+ </p>
+ </div>
</div>
- </div>
+ </main>
</div>
diff --git a/docs/4.0/examples/navbars/navbar.css b/docs/4.0/examples/navbars/navbar.css
index 04f8c6b7f..70d209409 100644
--- a/docs/4.0/examples/navbars/navbar.css
+++ b/docs/4.0/examples/navbars/navbar.css
@@ -1,5 +1,4 @@
body {
- /*padding-top: 20px;*/
padding-bottom: 20px;
}
diff --git a/docs/4.0/examples/offcanvas/index.html b/docs/4.0/examples/offcanvas/index.html
index 81bebd819..c3ba9694c 100644
--- a/docs/4.0/examples/offcanvas/index.html
+++ b/docs/4.0/examples/offcanvas/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -51,7 +51,7 @@
</div>
</nav>
- <div class="container">
+ <main role="main" class="container">
<div class="row row-offcanvas row-offcanvas-right">
@@ -115,11 +115,11 @@
<hr>
- <footer>
- <p>&copy; Company 2017</p>
- </footer>
+ </main><!--/.container-->
- </div><!--/.container-->
+ <footer>
+ <p>&copy; Company 2017</p>
+ </footer>
<!-- Bootstrap core JavaScript
diff --git a/docs/4.0/examples/offcanvas/offcanvas.css b/docs/4.0/examples/offcanvas/offcanvas.css
index 6047cb304..1c9ca3b44 100644
--- a/docs/4.0/examples/offcanvas/offcanvas.css
+++ b/docs/4.0/examples/offcanvas/offcanvas.css
@@ -20,9 +20,7 @@ footer {
@media screen and (max-width: 767px) {
.row-offcanvas {
position: relative;
- -webkit-transition: all .25s ease-out;
- -o-transition: all .25s ease-out;
- transition: all .25s ease-out;
+ transition: all .25s ease-out;
}
.row-offcanvas-right {
@@ -33,23 +31,19 @@ footer {
left: 0;
}
- .row-offcanvas-right
- .sidebar-offcanvas {
+ .row-offcanvas-right .sidebar-offcanvas {
right: -100%; /* 12 columns */
}
- .row-offcanvas-right.active
- .sidebar-offcanvas {
+ .row-offcanvas-right.active .sidebar-offcanvas {
right: -50%; /* 6 columns */
}
- .row-offcanvas-left
- .sidebar-offcanvas {
+ .row-offcanvas-left .sidebar-offcanvas {
left: -100%; /* 12 columns */
}
- .row-offcanvas-left.active
- .sidebar-offcanvas {
+ .row-offcanvas-left.active .sidebar-offcanvas {
left: -50%; /* 6 columns */
}
diff --git a/docs/4.0/examples/offcanvas/offcanvas.js b/docs/4.0/examples/offcanvas/offcanvas.js
index a89262a26..a41847081 100644
--- a/docs/4.0/examples/offcanvas/offcanvas.js
+++ b/docs/4.0/examples/offcanvas/offcanvas.js
@@ -1,5 +1,7 @@
-$(document).ready(function () {
+$(function () {
+ 'use strict'
+
$('[data-toggle="offcanvas"]').on('click', function () {
$('.row-offcanvas').toggleClass('active')
- });
-});
+ })
+})
diff --git a/docs/4.0/examples/signin/index.html b/docs/4.0/examples/signin/index.html
index f796153d3..0416d78b6 100644
--- a/docs/4.0/examples/signin/index.html
+++ b/docs/4.0/examples/signin/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
diff --git a/docs/4.0/examples/signin/signin.css b/docs/4.0/examples/signin/signin.css
index 7c1fa4190..516aeb126 100644
--- a/docs/4.0/examples/signin/signin.css
+++ b/docs/4.0/examples/signin/signin.css
@@ -14,13 +14,12 @@ body {
margin-bottom: 10px;
}
.form-signin .checkbox {
- font-weight: normal;
+ font-weight: 400;
}
.form-signin .form-control {
position: relative;
+ box-sizing: border-box;
height: auto;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
padding: 10px;
font-size: 16px;
}
diff --git a/docs/4.0/examples/starter-template/index.html b/docs/4.0/examples/starter-template/index.html
index 6d3bef63f..660f521fa 100644
--- a/docs/4.0/examples/starter-template/index.html
+++ b/docs/4.0/examples/starter-template/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -51,14 +51,14 @@
</div>
</nav>
- <div class="container">
+ <main role="main" class="container">
<div class="starter-template">
<h1>Bootstrap starter template</h1>
<p class="lead">Use this document as a way to quickly start any new project.<br> All you get is this text and a mostly barebones HTML document.</p>
</div>
- </div><!-- /.container -->
+ </main><!-- /.container -->
<!-- Bootstrap core JavaScript
diff --git a/docs/4.0/examples/sticky-footer-navbar/index.html b/docs/4.0/examples/sticky-footer-navbar/index.html
index b4de649a7..63beed2a4 100644
--- a/docs/4.0/examples/sticky-footer-navbar/index.html
+++ b/docs/4.0/examples/sticky-footer-navbar/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -18,39 +18,41 @@
<body>
- <!-- Fixed navbar -->
- <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
- <a class="navbar-brand" href="#">Fixed navbar</a>
- <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
- <span class="navbar-toggler-icon"></span>
- </button>
- <div class="collapse navbar-collapse" id="navbarCollapse">
- <ul class="navbar-nav mr-auto">
- <li class="nav-item active">
- <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
- </li>
- <li class="nav-item">
- <a class="nav-link" href="#">Link</a>
- </li>
- <li class="nav-item">
- <a class="nav-link disabled" href="#">Disabled</a>
- </li>
- </ul>
- <form class="form-inline mt-2 mt-md-0">
- <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
- <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
- </form>
- </div>
- </nav>
+ <header>
+ <!-- Fixed navbar -->
+ <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
+ <a class="navbar-brand" href="#">Fixed navbar</a>
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarCollapse">
+ <ul class="navbar-nav mr-auto">
+ <li class="nav-item active">
+ <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" href="#">Link</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link disabled" href="#">Disabled</a>
+ </li>
+ </ul>
+ <form class="form-inline mt-2 mt-md-0">
+ <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
+ <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
+ </form>
+ </div>
+ </nav>
+ </header>
<!-- Begin page content -->
- <div class="container">
+ <main role="main" class="container">
<div class="mt-3">
<h1>Sticky footer with fixed navbar</h1>
</div>
<p class="lead">Pin a fixed-height footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS. A fixed navbar has been added with <code>padding-top: 60px;</code> on the <code>body &gt; .container</code>.</p>
<p>Back to <a href="../sticky-footer">the default sticky footer</a> minus the navbar.</p>
- </div>
+ </main>
<footer class="footer">
<div class="container">
diff --git a/docs/4.0/examples/sticky-footer/index.html b/docs/4.0/examples/sticky-footer/index.html
index 66dcac132..a3055bb59 100644
--- a/docs/4.0/examples/sticky-footer/index.html
+++ b/docs/4.0/examples/sticky-footer/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -19,13 +19,13 @@
<body>
<!-- Begin page content -->
- <div class="container">
+ <main role="main" class="container">
<div class="mt-1">
<h1>Sticky footer</h1>
</div>
<p class="lead">Pin a fixed-height footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS.</p>
<p>Use <a href="../sticky-footer-navbar">the sticky footer with a fixed navbar</a> if need be, too.</p>
- </div>
+ </main>
<footer class="footer">
<div class="container">
diff --git a/docs/4.0/examples/sticky-footer/sticky-footer.css b/docs/4.0/examples/sticky-footer/sticky-footer.css
index 46578d1a5..ebe29104f 100644
--- a/docs/4.0/examples/sticky-footer/sticky-footer.css
+++ b/docs/4.0/examples/sticky-footer/sticky-footer.css
@@ -5,15 +5,13 @@ html {
min-height: 100%;
}
body {
- /* Margin bottom by footer height */
- margin-bottom: 60px;
+ margin-bottom: 60px; /* Margin bottom by footer height */
}
.footer {
position: absolute;
bottom: 0;
width: 100%;
- /* Set the fixed height of the footer here */
- height: 60px;
+ height: 60px; /* Set the fixed height of the footer here */
line-height: 60px; /* Vertically center the text there */
background-color: #f5f5f5;
}
diff --git a/docs/4.0/examples/tooltip-viewport/index.html b/docs/4.0/examples/tooltip-viewport/index.html
index a74317911..b5899d2e9 100644
--- a/docs/4.0/examples/tooltip-viewport/index.html
+++ b/docs/4.0/examples/tooltip-viewport/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
@@ -18,19 +18,19 @@
<body>
- <button class="btn btn-secondary float-right tooltip-bottom" title="This should be shifted to the left">Shift Left</button>
- <button class="btn btn-secondary tooltip-bottom" title="This should be shifted to the right">Shift Right</button>
- <button class="btn btn-secondary tooltip-right" title="This should be shifted down">Shift Down</button>
+ <button type="button" class="btn btn-secondary float-right tooltip-bottom" title="This should be shifted to the left">Shift Left</button>
+ <button type="button" class="btn btn-secondary tooltip-bottom" title="This should be shifted to the right">Shift Right</button>
+ <button type="button" class="btn btn-secondary tooltip-right" title="This should be shifted down">Shift Down</button>
- <button class="btn btn-secondary tooltip-right btn-bottom" title="This should be shifted up">Shift Up</button>
+ <button type="button" class="btn btn-secondary tooltip-right btn-bottom" title="This should be shifted up">Shift Up</button>
<div class="container-viewport">
- <button class="btn btn-secondary tooltip-viewport-bottom" title="This should be shifted to the left">Shift Left</button>
- <button class="btn btn-secondary tooltip-viewport-right" title="This should be shifted down">Shift Down</button>
+ <button type="button" class="btn btn-secondary tooltip-viewport-bottom" title="This should be shifted to the left">Shift Left</button>
+ <button type="button" class="btn btn-secondary tooltip-viewport-right" title="This should be shifted down">Shift Down</button>
- <button class="btn btn-secondary float-right tooltip-viewport-bottom" title="This should be shifted to the right">Shift Right</button>
+ <button type="button" class="btn btn-secondary float-right tooltip-viewport-bottom" title="This should be shifted to the right">Shift Right</button>
- <button class="btn btn-secondary tooltip-viewport-right btn-bottom" title="This should be shifted up">Shift Up</button>
+ <button type="button" class="btn btn-secondary tooltip-viewport-right btn-bottom" title="This should be shifted up">Shift Up</button>
</div>
diff --git a/docs/4.0/examples/tooltip-viewport/tooltip-viewport.js b/docs/4.0/examples/tooltip-viewport/tooltip-viewport.js
index e87f4eec7..dc75e18c6 100644
--- a/docs/4.0/examples/tooltip-viewport/tooltip-viewport.js
+++ b/docs/4.0/examples/tooltip-viewport/tooltip-viewport.js
@@ -1,18 +1,32 @@
-$(document).ready(function () {
+$(function () {
+ 'use strict'
+
$('.tooltip-right').tooltip({
placement: 'right',
- viewport: {selector: 'body', padding: 2}
+ viewport: {
+ selector: 'body',
+ padding: 2
+ }
})
$('.tooltip-bottom').tooltip({
placement: 'bottom',
- viewport: {selector: 'body', padding: 2}
+ viewport: {
+ selector: 'body',
+ padding: 2
+ }
})
$('.tooltip-viewport-right').tooltip({
placement: 'right',
- viewport: {selector: '.container-viewport', padding: 2}
+ viewport: {
+ selector: '.container-viewport',
+ padding: 2
+ }
})
$('.tooltip-viewport-bottom').tooltip({
placement: 'bottom',
- viewport: {selector: '.container-viewport', padding: 2}
+ viewport: {
+ selector: '.container-viewport',
+ padding: 2
+ }
})
})
diff --git a/docs/4.0/extend/icons.md b/docs/4.0/extend/icons.md
index bebb04851..4b2e79fd6 100644
--- a/docs/4.0/extend/icons.md
+++ b/docs/4.0/extend/icons.md
@@ -8,6 +8,7 @@ group: extend
Bootstrap doesn't include an icon library by default, but we have a handful of recommendations for you to choose from. While most icon sets include multiple file formats, we prefer SVG implementations for their improved accessibility and vector support.
## Preferred
+
We've tested and used these icon sets ourselves.
- [Iconic](https://useiconic.com/open/)
@@ -15,6 +16,7 @@ We've tested and used these icon sets ourselves.
- [Entypo](http://www.entypo.com/)
## More options
+
While we haven't tried these out, they do look promising and provide multiple formats—including SVG.
- [Bytesize](https://github.com/danklammer/bytesize-icons)
diff --git a/docs/4.0/extend/index.md b/docs/4.0/extend/index.md
index 27ecfa3bb..a87e06470 100644
--- a/docs/4.0/extend/index.md
+++ b/docs/4.0/extend/index.md
@@ -3,4 +3,4 @@ layout: docs
title: Extend
---
-todo: this entire page \ No newline at end of file
+todo: this entire page
diff --git a/docs/4.0/getting-started/best-practices.md b/docs/4.0/getting-started/best-practices.md
index 0e4792513..feb751cab 100644
--- a/docs/4.0/getting-started/best-practices.md
+++ b/docs/4.0/getting-started/best-practices.md
@@ -12,6 +12,7 @@ We've designed and developed Bootstrap to work in a number of environments. Here
{% endcallout %}
### General outline
+
- Working with CSS
- Working with Sass files
- Building new CSS components
diff --git a/docs/4.0/getting-started/browsers-devices.md b/docs/4.0/getting-started/browsers-devices.md
index fdad8fffd..6ffb73792 100644
--- a/docs/4.0/getting-started/browsers-devices.md
+++ b/docs/4.0/getting-started/browsers-devices.md
@@ -101,7 +101,7 @@ For a list of some of the browser bugs that Bootstrap has to grapple with, see o
## Internet Explorer
-Internet Explorer 10+ is supported; IE9 and down is not. Please be aware that some CSS3 properties and HTML5 elements are not fully supported in IE10, or require prefixed properties for full functionality. Visit [Can I use...](http://caniuse.com/) for details on browser support of CSS3 and HTML5 features.
+Internet Explorer 10+ is supported; IE9 and down is not. Please be aware that some CSS3 properties and HTML5 elements are not fully supported in IE10, or require prefixed properties for full functionality. Visit [Can I use...](https://caniuse.com/) for details on browser support of CSS3 and HTML5 features.
**If you require IE8-9 support, use Bootstrap 3.** It's the most stable version of our code and is still supported by our team for critical bugfixes and documentation changes. However, no new features will be added to it.
@@ -125,6 +125,7 @@ The `.dropdown-backdrop` element isn't used on iOS in the nav because of the com
Page zooming inevitably presents rendering artifacts in some components, both in Bootstrap and the rest of the web. Depending on the issue, we may be able to fix it (search first and then open an issue if need be). However, we tend to ignore these as they often have no direct solution other than hacky workarounds.
## Sticky `:hover`/`:focus` on mobile
+
Even though real hovering isn't possible on most touchscreens, most mobile browsers emulate hovering support and make `:hover` "sticky". In other words, `:hover` styles start applying after tapping an element and only stop applying after the user taps some other element. On mobile-first sites, this behavior is normally undesirable.
Bootstrap includes a workaround for this, although it is disabled by default. By setting `$enable-hover-media-query` to `true` when compiling from Sass, Bootstrap will use [mq4-hover-shim](https://github.com/twbs/mq4-hover-shim) to disable `:hover` styles in browsers that emulate hovering, thus preventing sticky `:hover` styles. There are some caveats to this workaround; see the shim's documentation for details.
@@ -167,7 +168,7 @@ Want to see an example? [Check out this JS Bin demo.](http://jsbin.com/OyaqoDO/2
## Validators
-In order to provide the best possible experience to old and buggy browsers, Bootstrap uses [CSS browser hacks](http://browserhacks.com) in several places to target special CSS to certain browser versions in order to work around bugs in the browsers themselves. These hacks understandably cause CSS validators to complain that they are invalid. In a couple places, we also use bleeding-edge CSS features that aren't yet fully standardized, but these are used purely for progressive enhancement.
+In order to provide the best possible experience to old and buggy browsers, Bootstrap uses [CSS browser hacks](http://browserhacks.com/) in several places to target special CSS to certain browser versions in order to work around bugs in the browsers themselves. These hacks understandably cause CSS validators to complain that they are invalid. In a couple places, we also use bleeding-edge CSS features that aren't yet fully standardized, but these are used purely for progressive enhancement.
These validation warnings don't matter in practice since the non-hacky portion of our CSS does fully validate and the hacky portions don't interfere with the proper functioning of the non-hacky portion, hence why we deliberately ignore these particular warnings.
diff --git a/docs/4.0/getting-started/build-tools.md b/docs/4.0/getting-started/build-tools.md
index f8fb03fdc..64b032021 100644
--- a/docs/4.0/getting-started/build-tools.md
+++ b/docs/4.0/getting-started/build-tools.md
@@ -12,10 +12,10 @@ Bootstrap uses [NPM scripts](https://docs.npmjs.com/misc/scripts) for its build
To use our build system and run our documentation locally, you'll need a copy of Bootstrap's source files and Node. Follow these steps and you should be ready to rock:
-1. [Download and install Node](https://nodejs.org/download/), which we use to manage our dependencies.
+1. [Download and install Node.js](https://nodejs.org/download/), which we use to manage our dependencies.
2. Navigate to the root `/bootstrap` directory and run `npm install` to install our local dependencies listed in [package.json]({{ site.repo }}/blob/v{{ site.current_version }}/package.json).
3. [Install Ruby][install-ruby], install [Bundler][gembundler] with `gem install bundler`, and finally run `bundle install`. This will install all Ruby dependencies, such as Jekyll and plugins.
- - **Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems.
+ - **Windows users:** Read [this guide](https://jekyllrb.com/docs/windows/) to get Jekyll up and running without problems.
When completed, you'll be able to run the various commands provided from the command line.
@@ -36,7 +36,7 @@ Our [package.json]({{ site.repo }}/blob/v{{ site.current_version }}/package.json
Bootstrap uses [Autoprefixer][autoprefixer] (included in our build process) to automatically add vendor prefixes to some CSS properties at build time. Doing so saves us time and code by allowing us to write key parts of our CSS a single time while eliminating the need for vendor mixins like those found in v3.
-We maintain the list of browsers supported through Autoprefixer in a separate file within our GitHub repository. See [/build/postcss.config.js]({{ site.repo }}/blob/v{{ site.current_version }}/build/postcss.config.js) for details.
+We maintain the list of browsers supported through Autoprefixer in a separate file within our GitHub repository. See [/package.json]({{ site.repo }}/blob/v{{ site.current_version }}/package.json) for details.
## Local documentation
diff --git a/docs/4.0/getting-started/download.md b/docs/4.0/getting-started/download.md
index a5a586e9c..cce660178 100644
--- a/docs/4.0/getting-started/download.md
+++ b/docs/4.0/getting-started/download.md
@@ -50,9 +50,9 @@ Pull in Bootstrap's **source files** into nearly any project with some of the mo
### npm
-Install Bootstrap in your Node powered apps with [the npm package](https://www.npmjs.com/package/bootstrap):
+Install Bootstrap in your Node.js powered apps with [the npm package](https://www.npmjs.com/package/bootstrap):
-{% highlight bash %}
+{% highlight sh %}
npm install bootstrap@{{ site.current_version }}
{% endhighlight %}
@@ -73,7 +73,7 @@ gem 'bootstrap', '~> 4.0.0.beta'
Alternatively, if you're not using Bundler, you can install the gem by running this command:
-{% highlight bash %}
+{% highlight sh %}
gem install bootstrap -v 4.0.0.beta
{% endhighlight %}
@@ -81,15 +81,15 @@ gem install bootstrap -v 4.0.0.beta
### Composer
-You can also install and manage Bootstrap's Sass and JavaScript using [Composer](https://getcomposer.org):
+You can also install and manage Bootstrap's Sass and JavaScript using [Composer](https://getcomposer.org/):
-{% highlight bash %}
+{% highlight sh %}
composer require twbs/bootstrap:{{ site.current_version }}
{% endhighlight %}
### NuGet
-If you develop in .NET, you can also install and manage Bootstrap's [CSS](https://www.nuget.org/packages/bootstrap/) or [Sass](https://www.nuget.org/packages/bootstrap.sass/) and JavaScript using [NuGet](https://www.nuget.org):
+If you develop in .NET, you can also install and manage Bootstrap's [CSS](https://www.nuget.org/packages/bootstrap/) or [Sass](https://www.nuget.org/packages/bootstrap.sass/) and JavaScript using [NuGet](https://www.nuget.org/):
{% highlight powershell %}
Install-Package bootstrap -Pre
diff --git a/docs/4.0/getting-started/introduction.md b/docs/4.0/getting-started/introduction.md
index 4035ae8f4..8a3badc8d 100644
--- a/docs/4.0/getting-started/introduction.md
+++ b/docs/4.0/getting-started/introduction.md
@@ -14,13 +14,19 @@ toc: true
Looking to quickly add Bootstrap to your project? Use the Bootstrap CDN, provided for free by the folks at MaxCDN. Using a package manager or need to download the source files? [Head to the downloads page.]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/download/)
+### CSS
+
Copy-paste the stylesheet `<link>` into your `<head>` before all other stylesheets to load our CSS.
{% highlight html %}
<link rel="stylesheet" href="{{ site.cdn.css }}" integrity="{{ site.cdn.css_hash }}" crossorigin="anonymous">
{% endhighlight %}
-Add our optional JavaScript plugins, jQuery, and [Popper.js](https://github.com/FezVrasta/popper.js) near the end of your pages, right before the closing `</body>` tag. Be sure to place jQuery and Popper.js first, as our JavaScript plugins depend on them. While we use [jQuery's slim build](https://blog.jquery.com/2016/06/09/jquery-3-0-final-released/) in our docs, the full version is also supported.
+### JS
+
+Many of our components require the use of JavaScript to function. Specifically, they require [jQuery](https://jquery.com), [Popper.js](https://popper.js.org/), and our own JavaScript plugins. Place the following `<script>`s near the end of your pages, right before the closing `</body>` tag, to enable them. jQuery must come first, then Popper.js, and then our JavaScript plugins.
+
+We use [jQuery's slim build](https://blog.jquery.com/2016/06/09/jquery-3-0-final-released/), but the full version is also supported.
{% highlight html %}
<script src="{{ site.cdn.jquery }}" integrity="{{ site.cdn.jquery_hash }}" crossorigin="anonymous"></script>
@@ -28,14 +34,29 @@ Add our optional JavaScript plugins, jQuery, and [Popper.js](https://github.com/
<script src="{{ site.cdn.js }}" integrity="{{ site.cdn.js_hash }}" crossorigin="anonymous"></script>
{% endhighlight %}
-And that's it—you're on your way to a fully Bootstrapped site. If you're at all unsure about the general page structure, keep reading for an example page template.
+Curious which components explicitly require jQuery, our JS, and Popper.js? Click the show components link below. If you're at all unsure about the general page structure, keep reading for an example page template.
+
+<details>
+<summary class="text-primary mb-3">Show components requiring JavaScript</summary>
+{% markdown %}
+- Alerts for dismissing
+- Buttons for toggling states and checkbox/radio functionality
+- Carousel for all slide behaviors, controls, and indicators
+- Collapse for toggling visibility of content
+- Dropdowns for displaying and positioning (also requires [Popper.js](https://popper.js.org/))
+- Modals for displaying, positioning, and scroll behavior
+- Navbar for extending our Collapse plugin to implement responsive behavior
+- Tooltips and popovers for displaying and positioning (also requires [Popper.js](https://popper.js.org/))
+- Scrollspy for scroll behavior and navigation updates
+{% endmarkdown %}
+</details>
## Starter template
Be sure to have your pages set up with the latest design and development standards. That means using an HTML5 doctype and including a viewport meta tag for proper responsive behaviors. Put it all together and your pages should look like this:
{% highlight html %}
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<title>Hello, world!</title>
@@ -69,7 +90,7 @@ Bootstrap employs a handful of important global styles and settings that you'll
Bootstrap requires the use of the HTML5 doctype. Without it, you'll see some funky incomplete styling, but including it shouldn't cause any considerable hiccups.
{% highlight html %}
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
...
</html>
diff --git a/docs/4.0/getting-started/javascript.md b/docs/4.0/getting-started/javascript.md
index 12e7f89ca..648132255 100644
--- a/docs/4.0/getting-started/javascript.md
+++ b/docs/4.0/getting-started/javascript.md
@@ -14,7 +14,7 @@ Plugins can be included individually (using Bootstrap's individual `*.js` files)
Some plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs. Also note that **all plugins depend on jQuery** (this means jQuery must be included **before** the plugin files). [Consult our `package.json`]({{ site.repo }}/blob/v{{ site.current_version }}/package.json) to see which versions of jQuery are supported.
-Our tooltips and popovers also depend on [Popper.js](https://github.com/FezVrasta/popper.js).
+Our dropdowns, popovers and tooltips also depend on [Popper.js](https://popper.js.org/).
## Data attributes
@@ -84,6 +84,7 @@ $('#myCarousel').carousel('2') // !! Will be ignored, as the transition to the s
{% endhighlight %}
### Default settings
+
You can change the default settings for a plugin by modifying the plugin's `Constructor.Default` object:
{% highlight js %}
diff --git a/docs/4.0/getting-started/options.md b/docs/4.0/getting-started/options.md
deleted file mode 100644
index 2547ef1ad..000000000
--- a/docs/4.0/getting-started/options.md
+++ /dev/null
@@ -1,115 +0,0 @@
----
-layout: docs
-title: Customization options
-description: Customize Bootstrap 4 with our new built-in Sass variables for global style preferences for easy theming and component changes.
-group: getting-started
-toc: true
----
-
-## Customizing variables
-
-Every Sass variable in Bootstrap 4 includes the `!default` flag, meaning you can override that default value in your own Sass even after that original variable's been defined. Copy and paste variables as needed, modify the values, remove the `!default` flag, and recompile.
-
-For example, to change out the `background-color` and `color` for the `<body>`, you'd do the following:
-
-{% highlight scss %}
-$body-bg: $gray-900;
-$body-color: $gray-600;
-{% endhighlight %}
-
-Do the same for any variable you need to override, including the global options listed below.
-
-## Global options
-
-Customize Bootstrap 4 with our built-in custom variables file and easily toggle global CSS preferences with new `$enable-*` Sass variables. Override a variable's value and recompile with `npm run test` as needed.
-
-You can find and customize these variables for key global options in our `_variables.scss` file.
-
-| Variable | Values | Description |
-| --------------------------- | ---------------------------------- | -------------------------------------------------------------------------------------- |
-| `$spacer` | `1rem` (default), or any value > 0 | Specifies the default spacer value to programmatically generate our [spacer utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/spacing/). |
-| `$enable-rounded` | `true` (default) or `false` | Enables predefined `border-radius` styles on various components. |
-| `$enable-shadows` | `true` or `false` (default) | Enables predefined `box-shadow` styles on various components. |
-| `$enable-gradients` | `true` or `false` (default) | Enables predefined gradients via `background-image` styles on various components. |
-| `$enable-transitions` | `true` (default) or `false` | Enables predefined `transition`s on various components. |
-| `$enable-hover-media-query` | `true` or `false` (default) | ... |
-| `$enable-grid-classes` | `true` (default) or `false` | Enables the generation of CSS classes for the grid system (e.g., `.container`, `.row`, `.col-md-1`, etc.). |
-| `$enable-print-styles` | `true` (default) or `false` | Enables styles for optimizing printing. |
-
-## Color
-
-Many of Bootstrap's various components and utilities are built through a series of colors defined in a Sass map. This map can be looped over in Sass to quickly generate a series of rulesets.
-
-### All colors
-
-All colors available in Bootstrap 4, available as Sass variables and a Sass map in our `scss/_variables.scss` file. This will be expanded upon in subsequent minor releases to add additional shades, much like the [grayscale palette](#grays) we already include.
-
-<div class="row">
- {% for color in site.data.colors %}
- {% unless color.name == "white" or color.name == "gray" or color.name == "gray-dark" %}
- <div class="col-md-4">
- <div class="p-3 mb-3 swatch-{{ color.name }}">{{ color.name | capitalize }}</div>
- </div>
- {% endunless %}
- {% endfor %}
-</div>
-
-Here's how you can use these in your Sass:
-
-{% highlight scss %}
-// With variable
-.alpha { color: $purple; }
-
-// From the Sass map with our `color()` function
-.beta { color: color("purple"); }
-{% endhighlight %}
-
-[Color utility classes]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/colors/) are also available for setting `color` and `background-color`.
-
-{% callout info %}
-In the future, we'll aim to provide Sass maps and variables for shades of each color as we've done with the grayscale colors below.
-{% endcallout %}
-
-### Theme colors
-
-We use a subset of all colors to create a smaller color palette for generating color schemes, also available as Sass variables and a Sass map in our `scss/_variables.scss` file.
-
-<div class="row">
- {% for color in site.data.theme-colors %}
- <div class="col-md-4">
- <div class="p-3 mb-3 swatch-{{ color.name }}">{{ color.name | capitalize }}</div>
- </div>
- {% endfor %}
-</div>
-
-### Grays
-
-An expansive set of gray variables and a Sass map in `scss/_variables.scss` for consistent shades of gray across your project.
-
-<div class="row mb-3">
- <div class="col-md-4">
- {% for color in site.data.grays %}
- <div class="p-3 swatch-{{ color.name }}">{{ color.name | capitalize }}</div>
- {% endfor %}
- </div>
-</div>
-
-Within `_variables.scss`, you'll find our color variables and Sass map. Here's an example of the `$colors` Sass map:
-
-{% highlight scss %}
-$colors: (
- red: $red,
- orange: $orange,
- yellow: $yellow,
- green: $green,
- teal: $teal,
- blue: $blue,
- pink: $pink,
- purple: $purple,
- white: $white,
- gray: $gray-600,
- gray-dark: $gray-900
-) !default;
-{% endhighlight %}
-
-Add, remove, or modify values within the map to update how they're used in many other components. Unfortunately at this time, not _every_ component utilizes this Sass map. Future updates will strive to improve upon this. Until then, plan on making use of the `${color}` variables and this Sass map.
diff --git a/docs/4.0/getting-started/theming.md b/docs/4.0/getting-started/theming.md
new file mode 100644
index 000000000..c4c50dc4b
--- /dev/null
+++ b/docs/4.0/getting-started/theming.md
@@ -0,0 +1,287 @@
+---
+layout: docs
+title: Theming Bootstrap
+description: Customize Bootstrap 4 with our new built-in Sass variables for global style preferences for easy theming and component changes.
+group: getting-started
+toc: true
+redirect_from: "/docs/4.0/getting-started/options/"
+---
+
+## Introduction
+
+In Bootstrap 3, theming was largely driven by variable overrides in LESS, custom CSS, and a separate theme stylesheet that we included in our `dist` files. With some effort, one could completely redesign the look of Bootstrap 3 without touching the core files. Bootstrap 4 provides a familiar, but slightly different approach.
+
+Now, theming is accomplished by Sass variables, Sass maps, and custom CSS. There's no more dedicated theme stylesheet anymore; instead, you can enable the built-in theme to add gradients, shadows, and more.
+
+## Sass
+
+Utilize our source Sass files to take advantage of variables, maps, mixins, and more.
+
+### File structure
+
+Whenever possible, avoid modifying Bootstrap's core files. For Sass, that means creating your own stylesheet that imports Bootstrap so you can modify and extend it. Assuming you've downloaded our source files or are using package manager, you'll have a file structure that looks like this:
+
+{% highlight plaintext %}
+your-project/
+├── scss
+│ └── custom.scss
+└── node_modules/
+ └── bootstrap
+ ├── js
+ └── scss
+{% endhighlight %}
+
+In your `custom.scss`, you'll import Bootstrap's source Sass files. You have two options: include all of Bootstrap, or pick the parts you need. We encourage the latter, though be aware there are some requirements and dependencies across our components. You also will need to include some JavaScript for our plugins.
+
+{% highlight scss %}
+// Custom.scss
+// Option A: Include all of Bootstrap
+
+@import "node_modules/bootstrap/scss/bootstrap";
+{% endhighlight %}
+
+{% highlight scss %}
+// Custom.scss
+// Option B: Include parts of Bootstrap
+
+// Required
+@import "node_modules/bootstrap/scss/functions";
+@import "node_modules/bootstrap/scss/variables";
+@import "node_modules/bootstrap/scss/mixins";
+
+// Optional
+@import "node_modules/bootstrap/scss/reboot";
+@import "node_modules/bootstrap/scss/type";
+@import "node_modules/bootstrap/scss/images";
+@import "node_modules/bootstrap/scss/code";
+@import "node_modules/bootstrap/scss/grid";
+{% endhighlight %}
+
+With that setup in place, you can begin to modify any of the Sass variables and maps in your `custom.scss`. You can also start to add parts of Bootstrap under the `// Optional` section as needed.
+
+### Variable defaults
+
+Every Sass variable in Bootstrap 4 includes the `!default` flag allowing you to override the variable's default value in your own Sass without modifying Bootstrap's source code. Copy and paste variables as needed, modify their values, and remove the `!default` flag. If a variable has already been assigned, then it won't be re-assigned by the default values in Bootstrap.
+
+Variable overrides within the same Sass file can come before or after the default variables. However, when overriding across Sass files, your overrides must come before you import Bootstrap's Sass files.
+
+Here's an example that changes the `background-color` and `color` for the `<body>` when importing and compiling Bootstrap via npm:
+
+{% highlight scss %}
+// Your variable overrides
+$body-bg: #000;
+$body-color: #111;
+
+// Bootstrap and its default variables
+@import "node_modules/bootstrap/scss/bootstrap";
+{% endhighlight %}
+
+Repeat as necessary for any variable in Bootstrap, including the global options below.
+
+### Maps and loops
+
+Bootstrap 4 includes a handful of Sass maps, key value pairs that make it easier to generate families of related CSS. We use Sass maps for our colors, grid breakpoints, and more. Just like Sass variables, all Sass maps include the `!default` flag and can be overridden and extended.
+
+For example, to modify an existing color in our `$theme-colors` map, add the following to your custom Sass file:
+
+{% highlight scss %}
+$theme-colors: (
+ "primary": #0074d9,
+ "danger": #ff4136
+);
+{% endhighlight %}
+
+To add a new color to `$theme-colors`, add the new key and value:
+
+{% highlight scss %}
+$theme-colors: (
+ "custom-color": #900
+);
+{% endhighlight %}
+
+### Functions
+
+Bootstrap utilizes several Sass functions, but only a subset are applicable to general theming. We've included three functions for getting values from the color maps:
+
+{% highlight scss %}
+@function color($key: "blue") {
+ @return map-get($colors, $key);
+}
+
+@function theme-color($key: "primary") {
+ @return map-get($theme-colors, $key);
+}
+
+@function gray($key: "100") {
+ @return map-get($grays, $key);
+}
+{% endhighlight %}
+
+These allow you to pick one color from a Sass map much like how you'd use a color variable from v3.
+
+{% highlight scss %}
+.custom-element {
+ color: gray("100");
+ background-color: theme-color("dark");
+}
+{% endhighlight %}
+
+We also have another function for getting a particular _level_ of color from the `$theme-colors` map. Negative level values will lighten the color, while higher levels will darken.
+
+{% highlight scss %}
+@function theme-color-level($color-name: "primary", $level: 0) {
+ $color: theme-color($color-name);
+ $color-base: if($level > 0, #000, #fff);
+ $level: abs($level);
+
+ @return mix($color-base, $color, $level * $theme-color-interval);
+}
+{% endhighlight %}
+
+In practice, you'd call the function and pass in two parameters: the name of the color from `$theme-colors` (e.g., primary or danger) and a numeric level.
+
+{% highlight scss %}
+.custom-element {
+ color: theme-color-level(primary, -10);
+}
+{% endhighlight %}
+
+Additional functions could be added in the future or your own custom Sass to create level functions for additional Sass maps, or even a generic one if you wanted to be more verbose.
+
+## Sass options
+
+Customize Bootstrap 4 with our built-in custom variables file and easily toggle global CSS preferences with new `$enable-*` Sass variables. Override a variable's value and recompile with `npm run test` as needed.
+
+You can find and customize these variables for key global options in our `_variables.scss` file.
+
+| Variable | Values | Description |
+| --------------------------- | ---------------------------------- | -------------------------------------------------------------------------------------- |
+| `$spacer` | `1rem` (default), or any value > 0 | Specifies the default spacer value to programmatically generate our [spacer utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/spacing/). |
+| `$enable-rounded` | `true` (default) or `false` | Enables predefined `border-radius` styles on various components. |
+| `$enable-shadows` | `true` or `false` (default) | Enables predefined `box-shadow` styles on various components. |
+| `$enable-gradients` | `true` or `false` (default) | Enables predefined gradients via `background-image` styles on various components. |
+| `$enable-transitions` | `true` (default) or `false` | Enables predefined `transition`s on various components. |
+| `$enable-hover-media-query` | `true` or `false` (default) | ... |
+| `$enable-grid-classes` | `true` (default) or `false` | Enables the generation of CSS classes for the grid system (e.g., `.container`, `.row`, `.col-md-1`, etc.). |
+| `$enable-caret` | `true` (default) or `false` | Enables pseudo element caret on `.dropdown-toggle`. |
+| `$enable-print-styles` | `true` (default) or `false` | Enables styles for optimizing printing. |
+
+## Color
+
+Many of Bootstrap's various components and utilities are built through a series of colors defined in a Sass map. This map can be looped over in Sass to quickly generate a series of rulesets.
+
+### All colors
+
+All colors available in Bootstrap 4, available as Sass variables and a Sass map in our `scss/_variables.scss` file. This will be expanded upon in subsequent minor releases to add additional shades, much like the [grayscale palette](#grays) we already include.
+
+<div class="row">
+ {% for color in site.data.colors %}
+ {% unless color.name == "white" or color.name == "gray" or color.name == "gray-dark" %}
+ <div class="col-md-4">
+ <div class="p-3 mb-3 swatch-{{ color.name }}">{{ color.name | capitalize }}</div>
+ </div>
+ {% endunless %}
+ {% endfor %}
+</div>
+
+Here's how you can use these in your Sass:
+
+{% highlight scss %}
+// With variable
+.alpha { color: $purple; }
+
+// From the Sass map with our `color()` function
+.beta { color: color("purple"); }
+{% endhighlight %}
+
+[Color utility classes]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/colors/) are also available for setting `color` and `background-color`.
+
+{% callout info %}
+In the future, we'll aim to provide Sass maps and variables for shades of each color as we've done with the grayscale colors below.
+{% endcallout %}
+
+### Theme colors
+
+We use a subset of all colors to create a smaller color palette for generating color schemes, also available as Sass variables and a Sass map in our `scss/_variables.scss` file.
+
+<div class="row">
+ {% for color in site.data.theme-colors %}
+ <div class="col-md-4">
+ <div class="p-3 mb-3 swatch-{{ color.name }}">{{ color.name | capitalize }}</div>
+ </div>
+ {% endfor %}
+</div>
+
+### Grays
+
+An expansive set of gray variables and a Sass map in `scss/_variables.scss` for consistent shades of gray across your project.
+
+<div class="row mb-3">
+ <div class="col-md-4">
+ {% for color in site.data.grays %}
+ <div class="p-3 swatch-{{ color.name }}">{{ color.name | capitalize }}</div>
+ {% endfor %}
+ </div>
+</div>
+
+Within `_variables.scss`, you'll find our color variables and Sass map. Here's an example of the `$colors` Sass map:
+
+{% highlight scss %}
+$colors: (
+ "red": $red,
+ "orange": $orange,
+ "yellow": $yellow,
+ "green": $green,
+ "teal": $teal,
+ "blue": $blue,
+ "pink": $pink,
+ "purple": $purple,
+ "white": $white,
+ "gray": $gray-600,
+ "gray-dark": $gray-900
+) !default;
+{% endhighlight %}
+
+Add, remove, or modify values within the map to update how they're used in many other components. Unfortunately at this time, not _every_ component utilizes this Sass map. Future updates will strive to improve upon this. Until then, plan on making use of the `${color}` variables and this Sass map.
+
+## Components
+
+Many of Bootstrap's components and utilities are built with `@each` loops that iterate over a Sass map. This is especially helpful for generating variants of a component by our `$theme-colors` and creating responsive variants for each breakpoint. As you customize these Sass maps and recompile, you'll automatically see your changes reflected in these loops.
+
+### Modifiers
+
+Many of Bootstrap's components are built with a base-modifier class approach. This means the bulk of the styling is contained to a base class (e.g., `.btn`) while style variations are confined to modifier classes (e.g., `.btn-danger`). These modifier classes are built from the `$theme-colors` map to make customizing the number and name of our modifier classes.
+
+Here are two examples of how we loop over the `$theme-colors` map to generate modifiers to the `.alert` component and all our `.bg-*` background utilities.
+
+{% highlight scss %}
+// Generate alert modifier classes
+@each $color, $value in $theme-colors {
+ .alert-#{$color} {
+ @include alert-variant(theme-color-level($color, -10), theme-color-level($color, -9), theme-color-level($color, 6));
+ }
+}
+
+// Generate `.bg-*` color utilities
+@each $color, $value in $theme-colors {
+ @include bg-variant('.bg-#{$color}', $value);
+}
+{% endhighlight %}
+
+### Responsive
+
+These Sass loops aren't limited to color maps, either. You can also generate responsive variations of your components or utilities. Take for example our responsive text alignment utilities where we mix an `@each` loop for the `$grid-breakpoints` Sass map with a media query include.
+
+{% highlight scss %}
+@each $breakpoint in map-keys($grid-breakpoints) {
+ @include media-breakpoint-up($breakpoint) {
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+ .text#{$infix}-left { text-align: left !important; }
+ .text#{$infix}-right { text-align: right !important; }
+ .text#{$infix}-center { text-align: center !important; }
+ }
+}
+{% endhighlight %}
+
+Should you need to modify your `$grid-breakpoints`, your changes will apply to all the loops iterating over that map.
diff --git a/docs/4.0/getting-started/webpack.md b/docs/4.0/getting-started/webpack.md
index d1a40cfed..04af8d4f6 100644
--- a/docs/4.0/getting-started/webpack.md
+++ b/docs/4.0/getting-started/webpack.md
@@ -8,7 +8,7 @@ toc: true
## Installing Bootstrap
-[Install bootstrap]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/download/#npm) as a node module using npm.
+[Install bootstrap]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/download/#npm) as a Node.js module using npm.
## Importing JavaScript
diff --git a/docs/4.0/layout/grid.md b/docs/4.0/layout/grid.md
index 62d126b90..ca608477b 100644
--- a/docs/4.0/layout/grid.md
+++ b/docs/4.0/layout/grid.md
@@ -8,9 +8,12 @@ toc: true
## How it works
-Bootstrap's grid system uses a series of containers, rows, and columns to layout and align content. It's built with flexbox and is fully responsive. Below is an example and an in-depth look at how the grid comes together.
+Bootstrap's grid system uses a series of containers, rows, and columns to layout and align content. It's built with [flexbox](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes) and is fully responsive. Below is an example and an in-depth look at how the grid comes together.
-<div class="bd-example bd-example-row">
+**New to or unfamiliar with flexbox?** [Read this CSS Tricks flexbox guide](https://css-tricks.com/snippets/css/a-guide-to-flexbox/#flexbox-background) for background, terminology, guidelines, and code snippets.
+
+<div class="bd-example-row">
+{% example html %}
<div class="container">
<div class="row">
<div class="col-sm">
@@ -24,27 +27,26 @@ Bootstrap's grid system uses a series of containers, rows, and columns to layout
</div>
</div>
</div>
+{% endexample %}
</div>
The above example creates three equal-width columns on small, medium, large, and extra large devices using our predefined grid classes. Those columns are centered in the page with the parent `.container`.
Breaking it down, here's how it works:
-- Containers provide a means to center your site's contents. Use `.container` for fixed width or `.container-fluid` for full width.
-- Rows are horizontal groups of columns that ensure your columns are lined up properly. We use the negative margin method on `.row` to ensure all your content is aligned properly down the left side.
-- Content should be placed within columns, and only columns may be immediate children of rows.
-- Thanks to flexbox, grid columns without a set width will automatically layout with equal widths. For example, four instances of `.col-sm` will each automatically be 25% wide for small breakpoints.
-- Column classes indicate the number of columns you'd like to use out of the possible 12 per row. So, if you want three equal-width columns, you can use `.col-sm-4`.
+- Containers provide a means to center and horizontally pad your site's contents. Use `.container` for a responsive pixel width or `.container-fluid` for `width: 100%` across all viewport and device sizes.
+- Rows are wrappers for columns. Each column has horizontal `padding` (called a gutter) for controlling the space between them. This `padding` is then counteracted on the rows with negative margins. This way, all the content in your columns is visually aligned down the left side.
+- In a grid layout, content must be placed within columns and only columns may be immediate children of rows.
+- Thanks to flexbox, grid columns without a specified `width` will automatically layout as equal width columns. For example, four instances of `.col-sm` will each automatically be 25% wide from the small breakpoint and up. See the [auto-layout columns](#auto-layout-columns) section for more examples.
+- Column classes indicate the number of columns you'd like to use out of the possible 12 per row. So, if you want three equal-width columns across, you can use `.col-4`.
- Column `width`s are set in percentages, so they're always fluid and sized relative to their parent element.
- Columns have horizontal `padding` to create the gutters between individual columns, however, you can remove the `margin` from rows and `padding` from columns with `.no-gutters` on the `.row`.
-- There are five grid tiers, one for each [responsive breakpoint]({{ site.baseurl }}/docs/{{ site.docs_version }}/layout/overview/#responsive-breakpoints): all breakpoints (extra small), small, medium, large, and extra large.
-- Grid tiers are based on minimum widths, meaning they apply to that one tier and all those above it (e.g., `.col-sm-4` applies to small, medium, large, and extra large devices).
-- You can use predefined grid classes or Sass mixins for more semantic markup.
+- To make the grid responsive, there are five grid breakpoints, one for each [responsive breakpoint]({{ site.baseurl }}/docs/{{ site.docs_version }}/layout/overview/#responsive-breakpoints): all breakpoints (extra small), small, medium, large, and extra large.
+- Grid breakpoints are based on minimum width media queries, meaning **they apply to that one breakpoint and all those above it** (e.g., `.col-sm-4` applies to small, medium, large, and extra large devices, but not the first `xs` breakpoint).
+- You can use predefined grid classes (like `.col-4`) or [Sass mixins](#sass-mixins) for more semantic markup.
Be aware of the limitations and [bugs around flexbox](https://github.com/philipwalton/flexbugs), like the [inability to use some HTML elements as flex containers](https://github.com/philipwalton/flexbugs#9-some-html-elements-cant-be-flex-containers).
-Sounds good? Great, let's move on to seeing all that in an example.
-
## Grid options
While Bootstrap uses `em`s or `rem`s for defining most sizes, `px`s are used for grid breakpoints and container widths. This is because the viewport width is in pixels and does not change with the [font size](https://drafts.csswg.org/mediaqueries-3/#units).
@@ -474,9 +476,9 @@ If more than 12 columns are placed within a single row, each group of extra colu
{% endexample %}
</div>
-### Column resets
+### Column breaks
-With the handful of grid tiers available, you're bound to run into issues where, at certain breakpoints, your columns don't clear quite right as one is taller than the other. To fix that, use a combination of a `.clearfix` and our [responsive display utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/display/).
+Breaking columns to a new line in flexbox requires a small hack: add an element with `width: 100%` wherever you want to wrap your columns to a new line. Normally this is accomplished with multiple `.row`s, but not ever implementation method can account for this.
<div class="bd-example-row">
{% example html %}
@@ -484,8 +486,8 @@ With the handful of grid tiers available, you're bound to run into issues where,
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
- <!-- Add the extra clearfix for only the required viewport -->
- <div class="clearfix d-none d-sm-block"></div>
+ <!-- Force next columns to break to new line -->
+ <div class="w-100"></div>
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
<div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
@@ -493,25 +495,26 @@ With the handful of grid tiers available, you're bound to run into issues where,
{% endexample %}
</div>
-In addition to column clearing at responsive breakpoints, you may need to reset offsets. See this in action in [the grid example]({{ site.baseurl }}/docs/{{ site.docs_version }}/examples/grid/).
+You may also apply this break at specific breakpoints with our [responsive display utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/display/).
<div class="bd-example-row">
{% example html %}
<div class="row">
- <div class="col-sm-5 col-md-6">.col-sm-5 .col-md-6</div>
- <div class="col-sm-5 offset-sm-2 col-md-6 offset-md-0">.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0</div>
-</div>
+ <div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
+ <div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
-<div class="row">
- <div class="col-sm-6 col-md-5 col-lg-6">.col.col-sm-6.col-md-5.col-lg-6</div>
- <div class="col-sm-6 col-md-5 offset-md-2 col-lg-6 offset-lg-0">.col-sm-6 .col-md-5 .offset-md-2 .col-lg-6 .offset-lg-0</div>
+ <!-- Force next columns to break to new line at md breakpoint and up -->
+ <div class="w-100 d-none d-md-block"></div>
+
+ <div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
+ <div class="col-6 col-sm-4">.col-6 .col-sm-4</div>
</div>
{% endexample %}
</div>
## Reordering
-### Flex order
+### Order classes
Use `.order-` classes for controlling the **visual order** of your content. These classes are responsive, so you can set the `order` by breakpoint (e.g., `.order-1.order-md-2`). Includes support for `1` through `12` across all five grid tiers.
@@ -533,6 +536,26 @@ Use `.order-` classes for controlling the **visual order** of your content. Thes
{% endexample %}
</div>
+There's also a responsive `.order-first` class that quickly changes the order of one element by applying `order: -1`. This class can also be intermixed with the numbered `.order-*` classes as needed.
+
+<div class="bd-example-row">
+{% example html %}
+<div class="container">
+ <div class="row">
+ <div class="col">
+ First, but unordered
+ </div>
+ <div class="col">
+ Second, but unordered
+ </div>
+ <div class="col order-first">
+ Third, but first
+ </div>
+ </div>
+</div>
+{% endexample %}
+</div>
+
### Offsetting columns
You can offset grid columns in two ways: our responsive `.offset-` grid classes and our [margin utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/spacing/). Grid classes are sized to match columns while margins are more useful for quick layouts where the width of the offset is variable.
@@ -557,6 +580,22 @@ Move columns to the right using `.offset-md-*` classes. These classes increase t
{% endexample %}
</div>
+In addition to column clearing at responsive breakpoints, you may need to reset offsets. See this in action in [the grid example]({{ site.baseurl }}/docs/{{ site.docs_version }}/examples/grid/).
+
+<div class="bd-example-row">
+{% example html %}
+<div class="row">
+ <div class="col-sm-5 col-md-6">.col-sm-5 .col-md-6</div>
+ <div class="col-sm-5 offset-sm-2 col-md-6 offset-md-0">.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0</div>
+</div>
+
+<div class="row">
+ <div class="col-sm-6 col-md-5 col-lg-6">.col.col-sm-6.col-md-5.col-lg-6</div>
+ <div class="col-sm-6 col-md-5 offset-md-2 col-lg-6 offset-lg-0">.col-sm-6 .col-md-5 .offset-md-2 .col-lg-6 .offset-lg-0</div>
+</div>
+{% endexample %}
+</div>
+
#### Margin utilities
With the move to flexbox in v4, you can use margin utilities like `.mr-auto` to force sibling columns away from one another.
diff --git a/docs/4.0/migration.md b/docs/4.0/migration.md
index 5a63988cb..7c70c7221 100644
--- a/docs/4.0/migration.md
+++ b/docs/4.0/migration.md
@@ -7,6 +7,7 @@ toc: true
---
## Beta 2 changes
+
While in beta, we aim to have no breaking changes. However, things don't always go as planned. Below are the breaking changes to bear in mind when moving from Beta 1 to Beta 2.
### Breaking
@@ -67,7 +68,7 @@ Here are the big ticket items you'll want to be aware of when moving from v3 to
- the upstream version of [Glyphicons](https://glyphicons.com/)
- [Octicons](https://octicons.github.com/)
- [Font Awesome](http://fontawesome.io/)
- - See the [Extend page]({{ site.baseurl }}/docs/{{ site.docs_version }}/extend) for a list of alternatives. Have additional suggestions? Please open an issue or PR.
+ - See the [Extend page]({{ site.baseurl }}/docs/{{ site.docs_version }}/extend/icons/) for a list of alternatives. Have additional suggestions? Please open an issue or PR.
- Dropped the Affix jQuery plugin.
- We recommend using `position: sticky` instead. [See the HTML5 Please entry](http://html5please.com/#sticky) for details and specific polyfill recommendations. One suggestion is to use an `@supports` rule for implementing it (e.g., `@supports (position: sticky) { ... }`)/
- If you were using Affix to apply additional, non-`position` styles, the polyfills might not support your use case. One option for such uses is the third-party [ScrollPos-Styler](https://github.com/acch/scrollpos-styler) library.
@@ -134,7 +135,7 @@ New to Bootstrap 4 is the [Reboot]({{ site.baseurl }}/docs/{{ site.docs_version
### Button group
- Rewrote component with flexbox.
-- Removed `.btn-group-justified`.
+- Removed `.btn-group-justified`. As a replacement you can use `<div class="btn-group d-flex" role="group"></div>` as a wrapper around elements with `.w-100`.
- Dropped the `.btn-group-xs` class entirely given removal of `.btn-xs`.
- Removed explicit spacing between button groups in button toolbars; use margin utilities now.
- Improved documentation for use with other components.
@@ -254,7 +255,7 @@ Dropped entirely for the new card component.
### Vendor prefix mixins
-Bootstrap 3's [vendor prefix](http://webdesign.about.com/od/css/a/css-vendor-prefixes.htm) mixins, which were deprecated in v3.2.0, have been removed in Bootstrap 4. Since we use [Autoprefixer](https://github.com/postcss/autoprefixer), they're no longer necessary.
+Bootstrap 3's [vendor prefix](https://www.thoughtco.com/css-vendor-prefixes-3466867) mixins, which were deprecated in v3.2.0, have been removed in Bootstrap 4. Since we use [Autoprefixer](https://github.com/postcss/autoprefixer), they're no longer necessary.
Removed the following mixins: `animation`, `animation-delay`, `animation-direction`, `animation-duration`, `animation-fill-mode`, `animation-iteration-count`, `animation-name`, `animation-timing-function`, `backface-visibility`, `box-sizing`, `content-columns`, `hyphens`, `opacity`, `perspective`, `perspective-origin`, `rotate`, `rotateX`, `rotateY`, `scale`, `scaleX`, `scaleY`, `skew`, `transform-origin`, `transition-delay`, `transition-duration`, `transition-property`, `transition-timing-function`, `transition-transform`, `translate`, `translate3d`, `user-select`
diff --git a/docs/4.0/utilities/clearfix.md b/docs/4.0/utilities/clearfix.md
index d9de7fdf4..535a33593 100644
--- a/docs/4.0/utilities/clearfix.md
+++ b/docs/4.0/utilities/clearfix.md
@@ -32,7 +32,7 @@ The following example shows how the clearfix can be used. Without the clearfix t
{% example html %}
<div class="bg-info clearfix">
- <button class="btn btn-secondary float-left">Example Button floated left</button>
- <button class="btn btn-secondary float-right">Example Button floated right</button>
+ <button type="button" class="btn btn-secondary float-left">Example Button floated left</button>
+ <button type="button" class="btn btn-secondary float-right">Example Button floated right</button>
</div>
{% endexample %}
diff --git a/docs/4.0/utilities/colors.md b/docs/4.0/utilities/colors.md
index ed4ba1066..13c0adc8a 100644
--- a/docs/4.0/utilities/colors.md
+++ b/docs/4.0/utilities/colors.md
@@ -8,22 +8,26 @@ toc: true
{% example html %}
{% for color in site.data.theme-colors %}
-<p class="text-{{ color.name }}">.text-{{ color.name }}</p>{% endfor %}
+<p class="text-{{ color.name }}{% if color.name == "light" %} bg-dark{% endif %}">.text-{{ color.name }}</p>{% endfor %}
+<p class="text-muted">.text-muted</p>
+<p class="text-white bg-dark">.text-white</p>
{% endexample %}
-Contextual text classes also work well on anchors with the provided hover and focus states. **Note that the `.text-white` class has no link styling.**
+Contextual text classes also work well on anchors with the provided hover and focus states. **Note that the `.text-white` and `.text-muted` class has no link styling.**
{% example html %}
{% for color in site.data.theme-colors %}
-<p><a href="#" class="text-{{ color.name }}{% if color.name == "light" %} bg-gray{% endif %}">{{ color.name | capitalize }} link</a></p>{% endfor %}
+<p><a href="#" class="text-{{ color.name }}{% if color.name == "light" %} bg-dark{% endif %}">{{ color.name | capitalize }} link</a></p>{% endfor %}
+<p><a href="#" class="text-muted">Muted link</a></p>
+<p><a href="#" class="text-white bg-dark">White link</a></p>
{% endexample %}
Similar to the contextual text color classes, easily set the background of an element to any contextual class. Anchor components will darken on hover, just like the text classes. Background utilities **do not set `color`**, so in some cases you'll want to use `.text-*` utilities.
{% example html %}
{% for color in site.data.theme-colors %}
-<div class="p-3 mb-2 bg-{{ color.name }} {% if color.name == "light" %}text-gray-dark{% else %}text-white{% endif %}">.bg-{{ color.name }}</div>{% endfor %}
-<div class="p-3 mb-2 bg-white text-gray-dark">.bg-white</div>
+<div class="p-3 mb-2 bg-{{ color.name }} {% if color.name == "light" %}text-dark{% else %}text-white{% endif %}">.bg-{{ color.name }}</div>{% endfor %}
+<div class="p-3 mb-2 bg-white text-dark">.bg-white</div>
{% endexample %}
{% callout info %}
diff --git a/docs/4.0/utilities/spacing.md b/docs/4.0/utilities/spacing.md
index d6d2d7b54..035a337af 100644
--- a/docs/4.0/utilities/spacing.md
+++ b/docs/4.0/utilities/spacing.md
@@ -39,6 +39,7 @@ Where *size* is one of:
* `3` - (by default) for classes that set the `margin` or `padding` to `$spacer`
* `4` - (by default) for classes that set the `margin` or `padding` to `$spacer * 1.5`
* `5` - (by default) for classes that set the `margin` or `padding` to `$spacer * 3`
+* `auto` - for classes that set the `margin` to auto
(You can add more sizes by adding entries to the `$spacers` Sass map variable.)
diff --git a/docs/4.0/utilities/text.md b/docs/4.0/utilities/text.md
index 699871038..69b2dee8c 100644
--- a/docs/4.0/utilities/text.md
+++ b/docs/4.0/utilities/text.md
@@ -77,5 +77,6 @@ Quickly change the weight (boldness) of text or italicize text.
{% example html %}
<p class="font-weight-bold">Bold text.</p>
<p class="font-weight-normal">Normal weight text.</p>
+<p class="font-weight-light">Light weight text.</p>
<p class="font-italic">Italic text.</p>
{% endexample %}