]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Start to blow out and document more flexbox utilities
authorMark Otto <markdotto@gmail.com>
Fri, 23 Dec 2016 19:48:03 +0000 (11:48 -0800)
committerMark Otto <markd.otto@gmail.com>
Sat, 24 Dec 2016 22:21:04 +0000 (14:21 -0800)
- Adds new flexbox.md file to utilities docs

- Adds a `breakpoints.yml` data file for easier output of responsive classes in the docs. Will put this to use on other pages soon.

- Adds hella flex utils. There are some dupes for now, but they'll get removed in time.

docs/_data/breakpoints.yml [new file with mode: 0644]
docs/_data/nav.yml
docs/utilities/flexbox.md [new file with mode: 0644]
scss/utilities/_flex.scss

diff --git a/docs/_data/breakpoints.yml b/docs/_data/breakpoints.yml
new file mode 100644 (file)
index 0000000..3c8cfe2
--- /dev/null
@@ -0,0 +1,29 @@
+- breakpoint: xs
+  abbr: ""
+  name: Extra small
+  min-width: 0px
+  container: ""
+
+- breakpoint: sm
+  abbr: -sm
+  name: Small
+  min-width: 576px
+  container: 540px
+
+- breakpoint: md
+  abbr: -md
+  name: Medium
+  min-width: 768px
+  container: 720px
+
+- breakpoint: lg
+  abbr: -lg
+  name: Large
+  min-width: 992px
+  container: 960px
+
+- breakpoint: xl
+  abbr: -xl
+  name: Extra large
+  min-width: 1200px
+  container: 1140px
index 6723352f40f4c3b69641fcbdd1490507948f6b86..256e1bb9d7f0eed74b4c240f80c7d65ed47d6066 100644 (file)
@@ -56,6 +56,7 @@
     - title: Clearfix
     - title: Close icon
     - title: Colors
+    - title: Flexbox
     - title: Display property
     - title: Image replacement
     - title: Invisible content
diff --git a/docs/utilities/flexbox.md b/docs/utilities/flexbox.md
new file mode 100644 (file)
index 0000000..324bfa2
--- /dev/null
@@ -0,0 +1,196 @@
+---
+layout: docs
+title: Flexbox
+group: utilities
+---
+
+Quickly manage the layout, alignment, and sizing of grid columns, navigation, components, and more with a full suite of responsive flexbox utilities. For more complex implementations, custom CSS may be necessary.
+
+## Contents
+
+* Will be replaced with the ToC, excluding the "Contents" header
+{:toc}
+
+## Enable flex behaviors
+
+Apply `display` utilities to create a flexbox container and transform **direct children elements** into flex items. Flex containers and items are able to be modified further with additional flex properties. Choose from the following options.
+
+| Class | property: value; | Description |
+| --- | --- | --- |
+| `.d-flex` | `display: flex;` | Creates a block-level element using the flexbox model. |
+| `.d-inline-flex` | `display: inline-flex;` | Creates an inline-level element using the flexbox model. |
+
+{% example html %}
+<div class="d-flex p-2 bd-highlight">I'm a flexbox container!</div>
+{% endexample %}
+
+{% example html %}
+<div class="d-inline-flex p-2 bd-highlight">I'm an inline flexbox container!</div>
+{% endexample %}
+
+Responsive variations also exist for `.d-flex` and `.d-inline-flex`.
+
+<table class="table-responsive">
+  <thead>
+    <tr class="bg-faded">
+      <th>Class</th>
+      <th>Description</th>
+    </tr>
+  </thead>
+  <tbody>
+    {% for bp in site.data.breakpoints %}
+    <tr>
+      <td>
+        <code>.d{{ bp.abbr }}-flex</code>
+      </td>
+      <td>
+        Sets <code>display: flex;</code> on viewports {{ bp.min-width }} wide and up
+      </td>
+    </tr>
+    {% endfor %}
+    {% for bp in site.data.breakpoints %}
+    <tr>
+      <td>
+        <code>.d{{ bp.abbr }}-inline-flex</code>
+      </td>
+      <td>
+        Sets <code>display: inline-flex;</code> on viewports {{ bp.min-width }} wide and up
+      </td>
+    </tr>
+    {% endfor %}
+  </tbody>
+</table>
+
+## Direction
+
+Set the direction of flex items in a flex container with direction utilities. In most cases you can omit the horizontal class here as the browser default is `row`. However, you may encounter situations where you needed to explicitly set this value (like responsive layouts).
+
+Use `.flex-row` to set a horizontal direction.
+
+{% example html %}
+<div class="d-flex flex-row bd-highlight">
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+</div>
+{% endexample %}
+
+Use `.flex-column` to set a vertical direction.
+
+{% example html %}
+<div class="d-flex flex-column bd-highlight">
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+</div>
+{% endexample %}
+
+Responsive variations also exist for `.flex-row` and `.flex-column`.
+
+<table class="table-responsive">
+  <thead>
+    <tr class="bg-faded">
+      <th>Class</th>
+      <th>Description</th>
+    </tr>
+  </thead>
+  <tbody>
+    {% for bp in site.data.breakpoints %}
+    <tr>
+      <td>
+        <code>.flex{{ bp.abbr }}-row</code>
+      </td>
+      <td>
+        Sets <code>flex-direction: row;</code> on viewports {{ bp.min-width }} wide and up
+      </td>
+    </tr>
+    {% endfor %}
+    {% for bp in site.data.breakpoints %}
+    <tr>
+      <td>
+        <code>.flex{{ bp.abbr }}-column</code>
+      </td>
+      <td>
+        Sets <code>flex-direction: column;</code> on viewports {{ bp.min-width }} wide and up
+      </td>
+    </tr>
+    {% endfor %}
+  </tbody>
+</table>
+
+## Wrap
+
+Change how flex items wrap in a flex container. Choose from no wrapping at all (the browser default) with `.flex-nowrap`, or enable wrapping with `.flex-wrap`.
+
+{% example html %}
+<div class="d-flex flex-nowrap bd-highlight">
+<div class="p-2 bd-highlight">Flex item</div>
+<div class="p-2 bd-highlight">Flex item</div>
+<div class="p-2 bd-highlight">Flex item</div>
+<div class="p-2 bd-highlight">Flex item</div>
+<div class="p-2 bd-highlight">Flex item</div>
+<div class="p-2 bd-highlight">Flex item</div>
+<div class="p-2 bd-highlight">Flex item</div>
+<div class="p-2 bd-highlight">Flex item</div>
+<div class="p-2 bd-highlight">Flex item</div>
+<div class="p-2 bd-highlight">Flex item</div>
+<div class="p-2 bd-highlight">Flex item</div>
+<div class="p-2 bd-highlight">Flex item</div>
+<div class="p-2 bd-highlight">Flex item</div>
+<div class="p-2 bd-highlight">Flex item</div>
+<div class="p-2 bd-highlight">Flex item</div>
+</div>
+{% endexample %}
+
+{% example html %}
+<div class="d-flex flex-wrap bd-highlight">
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+  <div class="p-2 bd-highlight">Flex item</div>
+</div>
+{% endexample %}
+
+Responsive variations also exist for `.flex-nowrap` and `.flex-wrap`.
+
+<table class="table-responsive">
+  <thead>
+    <tr class="bg-faded">
+      <th>Class</th>
+      <th>Description</th>
+    </tr>
+  </thead>
+  <tbody>
+    {% for bp in site.data.breakpoints %}
+    <tr>
+      <td>
+        <code>.flex{{ bp.abbr }}-nowrap</code>
+      </td>
+      <td>
+        Sets <code>flex-wrap: nowrap;</code> on viewports {{ bp.min-width }} wide and up
+      </td>
+    </tr>
+    {% endfor %}
+    {% for bp in site.data.breakpoints %}
+    <tr>
+      <td>
+        <code>.flex{{ bp.abbr }}-wrap</code>
+      </td>
+      <td>
+        Sets <code>flex-wrap: wrap;</code> on viewports {{ bp.min-width }} wide and up
+      </td>
+    </tr>
+    {% endfor %}
+  </tbody>
+</table>
index 4d13e9f8c542d47184e3e90e0b836011479e536a..c9783c2c8a863bcbe8d83ec01164e39a0524323d 100644 (file)
     .flex-items#{$infix}-right   { justify-content: flex-end; }
     .flex-items#{$infix}-around  { justify-content: space-around; }
     .flex-items#{$infix}-between { justify-content: space-between; }
+
+    //
+    // New flex utils to replace and extend the ones above
+    //
+
+    .flex#{$infix}-fill { flex: 1 1 auto; }
+    .flex#{$infix}-justify { flex: 1 1 100%; }
+
+    .flex#{$infix}-row      { flex-direction: row !important; }
+    .flex#{$infix}-column   { flex-direction: column !important; }
+
+    .flex#{$infix}-wrap     { flex-wrap: wrap !important; }
+    .flex#{$infix}-nowrap   { flex-wrap: nowrap !important; }
+
+    .justify-content#{$infix}-start    { justify-content: flex-start !important; }
+    .justify-content#{$infix}-end      { justify-content: flex-end !important; }
+    .justify-content#{$infix}-center   { justify-content: center !important; }
+    .justify-content#{$infix}-between  { justify-content: space-between !important; }
+    .justify-content#{$infix}-around   { justify-content: space-around !important; }
+
+    .align-items#{$infix}-start      { align-items: flex-start !important; }
+    .align-items#{$infix}-end        { align-items: flex-end !important; }
+    .align-items#{$infix}-center     { align-items: center !important; }
+    .align-items#{$infix}-baseline   { align-items: baseline !important; }
+    .align-items#{$infix}-stretch    { align-items: stretch !important; }
+
+    .align-content#{$infix}-start    { align-content: flex-start !important; }
+    .align-content#{$infix}-end      { align-content: flex-end !important; }
+    .align-content#{$infix}-center   { align-content: center !important; }
+    .align-content#{$infix}-between  { align-content: space-between !important; }
+    .align-content#{$infix}-around   { align-content: space-around !important; }
+    .align-content#{$infix}-stretch  { align-content: stretch !important; }
+
+    // Item
+    .flex#{$infix}-auto { flex: 1 1 auto !important; }
+
+    .align-self#{$infix}-auto        { align-self: auto !important; }
+    .align-self#{$infix}-start       { align-self: flex-start !important; }
+    .align-self#{$infix}-end         { align-self: flex-end !important; }
+    .align-self#{$infix}-center      { align-self: center !important; }
+    .align-self#{$infix}-baseline    { align-self: baseline !important; }
+    .align-self#{$infix}-stretch     { align-self: stretch !important; }
   }
 }