Merge branch 'customizable-grid-gutters-per-breakpoint' of https://github.com/pixelbandito/bootstrap into pixelbandito-customizable-grid-gutters-per-breakpoint

This commit is contained in:
Mark Otto 2016-10-02 19:10:25 -07:00
commit 49153ecf4f
8 changed files with 87 additions and 36 deletions

View File

@ -324,7 +324,7 @@
.highlight { .highlight {
padding: 1rem; padding: 1rem;
margin: 1rem (-$grid-gutter-width / 2); margin: 1rem (-$grid-gutter-width-base / 2);
background-color: #f7f7f9; background-color: #f7f7f9;
@include media-breakpoint-up(sm) { @include media-breakpoint-up(sm) {

View File

@ -26,10 +26,10 @@
@include media-breakpoint-up(md) { @include media-breakpoint-up(md) {
.col-sm-6:first-child { .col-sm-6:first-child {
padding-right: ($grid-gutter-width * 1.5); padding-right: ($grid-gutter-width-base * 1.5);
}; };
.col-sm-6:last-child { .col-sm-6:last-child {
padding-left: ($grid-gutter-width * 1.5); padding-left: ($grid-gutter-width-base * 1.5);
} }
} }
} }

View File

@ -2,7 +2,7 @@
.bd-masthead { .bd-masthead {
position: relative; position: relative;
padding: 3rem ($grid-gutter-width / 2) 2rem; padding: 3rem ($grid-gutter-width-base / 2) 2rem;
color: $bd-purple-light; color: $bd-purple-light;
text-align: center; text-align: center;
background-image: linear-gradient(135deg, darken($bd-purple, 20%), $bd-purple, lighten(saturate($bd-purple, 5%), 15%)); background-image: linear-gradient(135deg, darken($bd-purple, 20%), $bd-purple, lighten(saturate($bd-purple, 5%), 15%));

View File

@ -1,7 +1,7 @@
// scss-lint:disable ImportantRule // scss-lint:disable ImportantRule
.bd-pageheader { .bd-pageheader {
padding: 2rem ($grid-gutter-width / 2); padding: 2rem ($grid-gutter-width-base / 2);
margin-bottom: 1.5rem; margin-bottom: 1.5rem;
color: $bd-purple-light; color: $bd-purple-light;
text-align: center; text-align: center;

View File

@ -1,4 +1,4 @@
--- atom---
layout: docs layout: docs
title: Grid system title: Grid system
description: Documentation and examples for using Bootstrap's powerful, responsive, and mobile-first grid system. description: Documentation and examples for using Bootstrap's powerful, responsive, and mobile-first grid system.
@ -34,14 +34,14 @@ Sounds good? Great, let's move on to seeing all that in an example.
If you're using Bootstrap's compiled CSS, this the example you'll want to start with. If you're using Bootstrap's compiled CSS, this the example you'll want to start with.
{% example html %} {% example html %}
<div class="container"> <div class="container">a
<div class="row"> <div class="row">
<div class="col-sm-4"> <div class="col-sm-4">
One of three columns One of three columnsa
</div> </div>
<div class="col-sm-4"> <div class="col-sm-4">
One of three columns One of three columns
</div> </div>atom
<div class="col-sm-4"> <div class="col-sm-4">
One of three columns One of three columns
</div> </div>
@ -140,7 +140,15 @@ Variables and maps determine the number of columns, the gutter width, and the me
{% highlight scss %} {% highlight scss %}
$grid-columns: 12; $grid-columns: 12;
$grid-gutter-width: 30px; $grid-gutter-width-base: 30px;
$grid-gutter-widths: (
xs: $grid-gutter-width-base, // 30px
sm: $grid-gutter-width-base, // 30px
md: $grid-gutter-width-base, // 30px
lg: $grid-gutter-width-base, // 30px
xl: $grid-gutter-width-base // 30px
)
$grid-breakpoints: ( $grid-breakpoints: (
// Extra small screen / phone // Extra small screen / phone
@ -169,23 +177,27 @@ Mixins are used in conjunction with the grid variables to generate semantic CSS
{% highlight scss %} {% highlight scss %}
// Creates a wrapper for a series of columns // Creates a wrapper for a series of columns
@mixin make-row($gutter: $grid-gutter-width) { @mixin make-row($gutters: $grid-gutter-widths) {
@if $enable-flex { @if $enable-flex {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
} @else { } @else {
@include clearfix(); @include clearfix();
} }
margin-left: ($gutter / -2);
margin-right: ($gutter / -2); @each $breakpoint in map-keys($gutters) {
@include media-breakpoint-up($breakpoint) {
$gutter: map-get($gutters, $breakpoint);
margin-right: ($gutter / -2);
margin-left: ($gutter / -2);
}
}
} }
// Make the element grid-ready (applying everything but the width) // Make the element grid-ready (applying everything but the width)
@mixin make-col-ready($gutter: $grid-gutter-width) { @mixin make-col-ready($gutters: $grid-gutter-widths) {
position: relative; position: relative;
min-height: 1px; // Prevent collapsing min-height: 1px; // Prevent collapsing
padding-right: ($gutter / 2);
padding-left: ($gutter / 2);
// Prevent columns from becoming too narrow when at smaller grid tiers by // Prevent columns from becoming too narrow when at smaller grid tiers by
// always setting `width: 100%;`. This works because we use `flex` values // always setting `width: 100%;`. This works because we use `flex` values
@ -193,6 +205,14 @@ Mixins are used in conjunction with the grid variables to generate semantic CSS
@if $enable-flex { @if $enable-flex {
width: 100%; width: 100%;
} }
@each $breakpoint in map-keys($gutters) {
@include media-breakpoint-up($breakpoint) {
$gutter: map-get($gutters, $breakpoint);
padding-right: ($gutter / 2);
padding-left: ($gutter / 2);
}
}
} }
@mixin make-col($size, $columns: $grid-columns) { @mixin make-col($size, $columns: $grid-columns) {
@ -464,11 +484,18 @@ Using our built-in grid Sass variables and maps, it's possible to completely cus
### Columns and gutters ### Columns and gutters
The number of grid columns and their horizontal padding (aka, gutters) can be modified via Sass variables. `$grid-columns` is used to generate the widths (in percent) of each individual column while `$grid-gutter-width` is divided evenly across `padding-left` and `padding-right` for the column gutters. The number of grid columns and their horizontal padding (aka, gutters) can be modified via Sass variables. `$grid-columns` is used to generate the widths (in percent) of each individual column while `$grid-gutter-widths` allows breakpoint-specific widths that are divided evenly across `padding-left` and `padding-right` for the column gutters.
{% highlight scss %} {% highlight scss %}
$grid-columns: 12; $grid-columns: 12 !default;
$grid-gutter-width: 30px; $grid-gutter-width-base: 30px !default;
$grid-gutter-widths: (
xs: $grid-gutter-width-base,
sm: $grid-gutter-width-base,
md: $grid-gutter-width-base,
lg: $grid-gutter-width-base,
xl: $grid-gutter-width-base
) !default;
{% endhighlight %} {% endhighlight %}
### Grid tiers ### Grid tiers

View File

@ -150,9 +150,15 @@ $container-max-widths: (
// //
// Set the number of columns and specify the width of the gutters. // Set the number of columns and specify the width of the gutters.
$grid-columns: 12 !default; $grid-columns: 12 !default;
$grid-gutter-width: 30px !default; $grid-gutter-width-base: 30px !default;
$grid-gutter-widths: (
xs: $grid-gutter-width-base,
sm: $grid-gutter-width-base,
md: $grid-gutter-width-base,
lg: $grid-gutter-width-base,
xl: $grid-gutter-width-base
) !default;
// Typography // Typography
// //

View File

@ -3,20 +3,18 @@
// Used only by Bootstrap to generate the correct number of grid classes given // Used only by Bootstrap to generate the correct number of grid classes given
// any value of `$grid-columns`. // any value of `$grid-columns`.
@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) { @mixin make-grid-columns($columns: $grid-columns, $gutters: $grid-gutter-widths, $breakpoints: $grid-breakpoints) {
// Common properties for all breakpoints // Common properties for all breakpoints
%grid-column { %grid-column {
position: relative; position: relative;
// Prevent columns from collapsing when empty // Prevent columns from collapsing when empty
min-height: 1px; min-height: 1px;
// Inner gutter via padding
padding-right: ($gutter / 2);
padding-left: ($gutter / 2);
@if $enable-flex { @if $enable-flex {
width: 100%; width: 100%;
} }
@include make-gutters($gutters);
} }
$breakpoint-counter: 0; $breakpoint-counter: 0;
@ -38,8 +36,6 @@
flex-grow: 1; flex-grow: 1;
max-width: 100%; max-width: 100%;
min-height: 1px; min-height: 1px;
padding-right: ($grid-gutter-width / 2);
padding-left: ($grid-gutter-width / 2);
} }
} }

View File

@ -2,7 +2,7 @@
// //
// Generate semantic grid columns with these mixins. // Generate semantic grid columns with these mixins.
@mixin make-container($gutter: $grid-gutter-width) { @mixin make-container($gutter: $grid-gutter-width-base) {
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
padding-left: ($gutter / 2); padding-left: ($gutter / 2);
@ -22,22 +22,36 @@
} }
} }
@mixin make-row($gutter: $grid-gutter-width) { @mixin make-gutters($gutters: $grid-gutter-widths) {
@each $breakpoint in map-keys($gutters) {
@include media-breakpoint-up($breakpoint) {
$gutter: map-get($gutters, $breakpoint);
padding-right: ($gutter / 2);
padding-left: ($gutter / 2);
}
}
}
@mixin make-row($gutters: $grid-gutter-widths) {
@if $enable-flex { @if $enable-flex {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
} @else { } @else {
@include clearfix(); @include clearfix();
} }
margin-left: ($gutter / -2);
margin-right: ($gutter / -2); @each $breakpoint in map-keys($gutters) {
@include media-breakpoint-up($breakpoint) {
$gutter: map-get($gutters, $breakpoint);
margin-right: ($gutter / -2);
margin-left: ($gutter / -2);
}
}
} }
@mixin make-col-ready($gutter: $grid-gutter-width) { @mixin make-col-ready($gutters: $grid-gutter-widths) {
position: relative; position: relative;
min-height: 1px; // Prevent collapsing min-height: 1px; // Prevent collapsing
padding-right: ($gutter / 2);
padding-left: ($gutter / 2);
// Prevent columns from becoming too narrow when at smaller grid tiers by // Prevent columns from becoming too narrow when at smaller grid tiers by
// always setting `width: 100%;`. This works because we use `flex` values // always setting `width: 100%;`. This works because we use `flex` values
@ -45,6 +59,14 @@
@if $enable-flex { @if $enable-flex {
width: 100%; width: 100%;
} }
@each $breakpoint in map-keys($gutters) {
@include media-breakpoint-up($breakpoint) {
$gutter: map-get($gutters, $breakpoint);
padding-right: ($gutter / 2);
padding-left: ($gutter / 2);
}
}
} }
@mixin make-col($size, $columns: $grid-columns) { @mixin make-col($size, $columns: $grid-columns) {