{% capture callout-include %}{% include callout-warning-color-assistive-technologies.md %}{% endcapture %}
{{ callout-include | markdownify }}
+Create responsive tables by adding `.table-responsive{-sm|-md|-lg|-xl}` to any `.table` to make them scroll horizontally at each `max-width` breakpoint of 575.99px, 767.99px, 991.99px, and 1119.99px, respectively.
+
+{% capture callout-include %}{% include callout-info-mediaqueries-breakpoints.md %}{% endcapture %}
+{{ callout-include | markdownify }}
## Captions
{% highlight scss %}
// Extra small devices (portrait phones, less than 576px)
-@media (max-width: 575px) { ... }
+@media (max-width: 575.99px) { ... }
// Small devices (landscape phones, less than 768px)
-@media (max-width: 767px) { ... }
+@media (max-width: 767.99px) { ... }
// Medium devices (tablets, less than 992px)
-@media (max-width: 991px) { ... }
+@media (max-width: 991.99px) { ... }
// Large devices (desktops, less than 1200px)
-@media (max-width: 1199px) { ... }
+@media (max-width: 1199.99px) { ... }
// Extra large devices (large desktops)
// No media query since the extra-large breakpoint has no upper bound on its width
{% endhighlight %}
+{% capture callout-include %}{% include callout-info-mediaqueries-breakpoints.md %}{% endcapture %}
+{{ callout-include | markdownify }}
+
Once again, these media queries are also available via Sass mixins:
{% highlight scss %}
{% highlight scss %}
// Extra small devices (portrait phones, less than 576px)
-@media (max-width: 575px) { ... }
+@media (max-width: 575.99px) { ... }
// Small devices (landscape phones, 576px and up)
-@media (min-width: 576px) and (max-width: 767px) { ... }
+@media (min-width: 576px) and (max-width: 767.99px) { ... }
// Medium devices (tablets, 768px and up)
-@media (min-width: 768px) and (max-width: 991px) { ... }
+@media (min-width: 768px) and (max-width: 991.99px) { ... }
// Large devices (desktops, 992px and up)
-@media (min-width: 992px) and (max-width: 1199px) { ... }
+@media (min-width: 992px) and (max-width: 1199.99px) { ... }
// Extra large devices (large desktops, 1200px and up)
@media (min-width: 1200px) { ... }
{% highlight scss %}
// Example
// Apply styles starting from medium devices and up to extra large devices
-@media (min-width: 768px) and (max-width: 1199px) { ... }
+@media (min-width: 768px) and (max-width: 1199.99px) { ... }
{% endhighlight %}
The Sass mixin for targeting the same screen size range would be:
}
// Maximum breakpoint width. Null for the largest (last) breakpoint.
-// The maximum value is calculated as the minimum of the next one less 0.1.
+// The maximum value is calculated as the minimum of the next one less 0.01px
+// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.
+// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max
//
// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
// 767px
@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {
$next: breakpoint-next($name, $breakpoints);
- @return if($next, breakpoint-min($next, $breakpoints) - 1px, null);
+ @return if($next, breakpoint-min($next, $breakpoints) - .01px, null);
}
// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.