0
0
mirror of https://github.com/twbs/bootstrap.git synced 2024-11-29 11:24:18 +01:00

More grid updates

- Flexbox responsive behavior fixed with specific .col-{breakpoint} classes now added
- Dropped the make-col mixin in favor of a column-basics placeholder that we can extend across our grid infrastructure
- Updated docs to use required .col-xs-12 (as a safeguard for when folks enable flexbox mode--this isn't necessary in default grid mode)
- Update flexbox grid docs to include responsive docs, tweak some other bits too
This commit is contained in:
Mark Otto 2016-02-06 11:31:46 -08:00
parent 414997baa8
commit 95f34be093
4 changed files with 44 additions and 39 deletions

View File

@ -21,10 +21,10 @@
<div class="container">
<div class="row">
<div class="col-md-3 push-md-9 bd-sidebar">
<div class="col-xs-12 col-md-3 push-md-9 bd-sidebar">
{% include nav-docs.html %}
</div>
<div class="col-md-9 pull-md-3 bd-content">
<div class="col-xs-12 col-md-9 pull-md-3 bd-content">
<h1 class="bd-title" id="content">{{ page.title }}</h1>
{{ content }}
</div>

View File

@ -23,37 +23,36 @@ The flexbox grid system behaves similar to our default grid system, but with a f
- [Grid mixins](/layout/grid#sass-mixins) and [predefined classes](/layout/grid#predefined-classes) include support for flexbox. Just [enable flexbox support](/getting-started/flexbox) to utilize them as you would otherwise.
- Nesting, offsets, pushes, and pulls are all supported in the flexbox grid system.
- Flexbox grid columns without a set width will automatically layout with even widths. For example, four columns will each automatically be 25% wide.
- Flexbox grid columns without a set width will automatically layout with equal widths. For example, four columns will each automatically be 25% wide.
- Flexbox grid columns have significantly more alignment options available, including vertical alignment.
- Unlike the default grid system where a grid column starts as full-width in the `xs` tier, flexbox requires a `.col-{breakpoint}` class for each tier.
Chill? Awesome—keep reading for more information and some code snippets.
## Auto-layout columns
As mentioned above, flexbox grid columns will automatically layout with even widths. Add any number of `.col-*`s for each breakpoint you need and you're good to go.
When flexbox support is enabled, you can utilize breakpoint-specific column classes for equal-width columns. Add any number of `.col-{breakpoint}`s for each breakpoint you need and you're good to go. For example, here's are two grid layouts that apply to every device and viewport possible.
<div class="bd-example-row">
{% example html %}
<div class="container">
<div class="row">
<div class="col-xs">
One of two columns
1 of 2
</div>
<div class="col-xs">
One of two columns
1 of 2
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-xs">
One of three columns
1 of 3
</div>
<div class="col-xs">
One of three columns
1 of 3
</div>
<div class="col-xs">
One of three columns
1 of 3
</div>
</div>
</div>
@ -67,13 +66,32 @@ Auto-layout for flexbox grid columns also means you can set the width of one col
<div class="container">
<div class="row">
<div class="col-xs">
One of three columns
1 of 3
</div>
<div class="col-xs-6">
One of three columns
2 of 3 (wider)
</div>
<div class="col-xs">
One of three columns
3 of 3
</div>
</div>
</div>
{% endexample %}
</div>
## Responsive flexbox
Unlike the default grid system, the flexbox grid requires a class for full-width columns. If you have a `.col-sm-6` and don't add `.col-xs-12`, your `xs` grid will not render correctly. Note that flexbox grid tiers still scale up across breakpoints, so if you want two 50% wide columns across `sm`, `md`, and `lg`, you only need to set `.col-sm-6`.
<div class="bd-example-row">
{% example html %}
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-6">
1 of 2 (stacked on mobile)
</div>
<div class="col-xs-12 col-sm-6">
1 of 2 (stacked on mobile)
</div>
</div>
</div>

View File

@ -8,26 +8,21 @@
@each $breakpoint in map-keys($breakpoints) {
$breakpoint-counter: ($breakpoint-counter + 1);
@include media-breakpoint-up($breakpoint, $breakpoints) {
// Work around cross-media @extend (https://github.com/sass/sass/issues/1050)
// %grid-column-float-#{$breakpoint} {
// float: left;
// }
@if $enable-flex {
.col-#{$breakpoint} {
@include make-col($gutter);
@extend column-basics; // Relative position, min-height, and horizontal padding
flex-basis: 0;
flex-grow: 1;
max-width: 100%;
}
}
@for $i from 1 through $columns {
.col-#{$breakpoint}-#{$i} {
// @if not $enable-flex {
// @extend %grid-column-float-#{$breakpoint};
// }
@include make-col-span($i, $columns);
@include make-col($i, $columns);
}
}
@each $modifier in (pull, push) {
@for $i from 0 through $columns {
.#{$modifier}-#{$breakpoint}-#{$i} {
@ -35,6 +30,7 @@
}
}
}
// `$columns - 1` because offsetting by the width of an entire row isn't possible
@for $i from 0 through ($columns - 1) {
@if $breakpoint-counter != 1 or $i != 0 { // Avoid emitting useless .col-xs-offset-0

View File

@ -33,26 +33,17 @@
margin-right: ($gutter / -2);
}
@mixin make-col($gutter: $grid-gutter-width) {
// Used here for `make-col` and in the `grid-framework` for generating
// predefined grid classes.
%column-basics {
position: relative;
// @if $enable-flex {
// flex: 1;
// } @else {
// float: left;
// }
min-height: 1px;
padding-left: ($gutter / 2);
padding-right: ($gutter / 2);
}
@mixin make-col-span($size, $columns: $grid-columns) {
position: relative;
@if $enable-flex {
flex: 0 0 auto;
}
min-height: 1px;
padding-left: ($grid-gutter-width / 2);
padding-right: ($grid-gutter-width / 2);
}
@mixin make-col($size, $columns: $grid-columns) {
@extend column-basics;
@if $enable-flex {
flex: 0 0 percentage($size / $columns);