diff --git a/scss/utilities/_spacing.scss b/scss/utilities/_spacing.scss index b2e2354b12..c43387dec1 100644 --- a/scss/utilities/_spacing.scss +++ b/scss/utilities/_spacing.scss @@ -8,7 +8,6 @@ @each $prop, $abbrev in (margin: m, padding: p) { @each $size, $length in $spacers { - .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; } .#{$abbrev}t#{$infix}-#{$size}, .#{$abbrev}y#{$infix}-#{$size} { @@ -29,6 +28,29 @@ } } + // Negative margins (e.g., where `.mb-n1` is negative version of `.mb-1`) + @each $size, $length in $spacers { + @if not $size == 0 { + .m#{$infix}-n#{$size} { margin: -$length !important; } + .mt#{$infix}-n#{$size}, + .my#{$infix}-n#{$size} { + margin-top: -$length !important; + } + .mr#{$infix}-n#{$size}, + .mx#{$infix}-n#{$size} { + margin-right: -$length !important; + } + .mb#{$infix}-n#{$size}, + .my#{$infix}-n#{$size} { + margin-bottom: -$length !important; + } + .ml#{$infix}-n#{$size}, + .mx#{$infix}-n#{$size} { + margin-left: -$length !important; + } + } + } + // Some special margin utils .m#{$infix}-auto { margin: auto !important; } .mt#{$infix}-auto, diff --git a/site/docs/4.1/layout/grid.md b/site/docs/4.1/layout/grid.md index e697517d7c..1ee0893818 100644 --- a/site/docs/4.1/layout/grid.md +++ b/site/docs/4.1/layout/grid.md @@ -324,6 +324,20 @@ Don't want your columns to simply stack in some grid tiers? Use a combination of {% include example.html content=example %} +### Gutters + +Gutters can be responsively adjusted by breakpoint-specific padding and negative margin utility classes. To change the gutters in a given row, pair a negative margin utility on the `.row` and matching padding utilities on the `.col`s. + +Here's an example of customizing the Bootstrap grid at the large (`lg`) breakpoint and above. We've increased the `.col` padding with `.px-lg-5` and then counteracted that with `.mx-lg-n5` on the parent `.row`. + +{% capture example %} +
+
Custom column padding
+
Custom column padding
+
+{% endcapture %} +{% include example.html content=example %} + ## Alignment Use flexbox alignment utilities to vertically and horizontally align columns. diff --git a/site/docs/4.1/utilities/spacing.md b/site/docs/4.1/utilities/spacing.md index b374748e03..dad1c00852 100644 --- a/site/docs/4.1/utilities/spacing.md +++ b/site/docs/4.1/utilities/spacing.md @@ -81,3 +81,25 @@ Additionally, Bootstrap also includes an `.mx-auto` class for horizontally cente Centered element {% endhighlight %} + +### Negative margin + +In CSS, `margin` properties can utilize negative values (`padding` cannot). As of 4.2, we've added negative margin utilities for every non-zero integer size listed above (e.g., `1`, `2`, `3`, `4`, `5`). These utilities are ideal for customizing grid column gutters across breakpoints. + +The syntax is nearly the same as the default, positive margin utilities, but with the addition of `n` before the requested size. Here's an example class that's the opposite of `.mt-1`: + +{% highlight scss %} +.mt-n1 { + margin-top: -0.25rem !important; +} +{% endhighlight %} + +Here's an example of customizing the Bootstrap grid at the medium (`md`) breakpoint and above. We've increased the `.col` padding with `.px-md-5` and then counteracted that with `.mx-md-n5` on the parent `.row`. + +{% capture example %} +
+
Custom column padding
+
Custom column padding
+
+{% endcapture %} +{% include example.html content=example %}