From 9863eb75d2c50c1e580232e15c6e87435fe72129 Mon Sep 17 00:00:00 2001
From: Mark Otto <markdotto@gmail.com>
Date: Mon, 1 Jun 2015 01:19:02 -0700
Subject: [PATCH] move spacing utils to separate file, document them a bit

---
 docs/components/utilities.md |  71 +++++++++++++++++++++-
 scss/_utilities-spacing.scss |  69 ++++++++++++++++++++++
 scss/_utilities.scss         | 110 -----------------------------------
 scss/bootstrap.scss          |   1 +
 4 files changed, 140 insertions(+), 111 deletions(-)
 create mode 100644 scss/_utilities-spacing.scss

diff --git a/docs/components/utilities.md b/docs/components/utilities.md
index a07e2de9e8..57a5d87b97 100644
--- a/docs/components/utilities.md
+++ b/docs/components/utilities.md
@@ -3,13 +3,82 @@ layout: page
 title: Utility classes
 ---
 
-Bootstrap includes dozens of utilities—classes with a single purpose. They're designed to keep the number of declarations in your CSS down while allowing for quick and easy development.
+Bootstrap includes dozens of utilities—classes with a single purpose. They're designed to reduce the frequency of highly repetitive declarations in your CSS down while allowing for quick and easy development.
 
 ## Contents
 
 * Will be replaced with the ToC, excluding the "Contents" header
 {:toc}
 
+## Spacing
+
+Assign `margin` or `padding` to an element or a subset of it's sides with shorthand classes. Includes support for individual properties, all properties, and vertical and horizontal properties. All classes are multiples on the global default value, `1rem`.
+
+### Margin
+
+{% highlight scss %}
+.m-a-0 { margin:        0; }
+.m-t-0 { margin-top:    0; }
+.m-r-0 { margin-right:  0; }
+.m-b-0 { margin-bottom: 0; }
+.m-l-0 { margin-left:   0; }
+
+.m-a { margin:        $spacer; }
+.m-t { margin-top:    $spacer-y; }
+.m-r { margin-right:  $spacer-x; }
+.m-b { margin-bottom: $spacer-y; }
+.m-l { margin-left:   $spacer-x; }
+.m-x { margin-right:  $spacer-x; margin-left: $spacer-x; }
+.m-y { margin-top:    $spacer-y; margin-bottom: $spacer-y; }
+
+.m-t-md { margin-top:    ($spacer-y * 1.5); }
+.m-r-md { margin-right:  ($spacer-y * 1.5); }
+.m-b-md { margin-bottom: ($spacer-y * 1.5); }
+.m-l-md { margin-left:   ($spacer-y * 1.5); }
+.m-x-md { margin-right:  ($spacer-x * 1.5); margin-left:   ($spacer-x * 1.5); }
+.m-y-md { margin-top:    ($spacer-y * 1.5); margin-bottom: ($spacer-y * 1.5); }
+
+.m-t-lg { margin-top:    ($spacer-y * 3); }
+.m-r-lg { margin-right:  ($spacer-y * 3); }
+.m-b-lg { margin-bottom: ($spacer-y * 3); }
+.m-l-lg { margin-left:   ($spacer-y * 3); }
+.m-x-lg { margin-right:  ($spacer-x * 3); margin-left:   ($spacer-x * 3); }
+.m-y-lg { margin-top:    ($spacer-y * 3); margin-bottom: ($spacer-y * 3); }
+{% endhighlight %}
+
+### Padding
+
+{% highlight scss %}
+.p-a-0 { padding:        0; }
+.p-t-0 { padding-top:    0; }
+.p-r-0 { padding-right:  0; }
+.p-b-0 { padding-bottom: 0; }
+.p-l-0 { padding-left:   0; }
+
+.p-a { padding:        $spacer; }
+.p-t { padding-top:    $spacer-y; }
+.p-r { padding-right:  $spacer-x; }
+.p-b { padding-bottom: $spacer-y; }
+.p-l { padding-left:   $spacer-x; }
+.p-x { padding-right:  $spacer-x; padding-left:   $spacer-x; }
+.p-y { padding-top:    $spacer-y; padding-bottom: $spacer-y; }
+
+.p-t-md { padding-top:    ($spacer-y * 1.5); }
+.p-r-md { padding-right:  ($spacer-y * 1.5); }
+.p-b-md { padding-bottom: ($spacer-y * 1.5); }
+.p-l-md { padding-left:   ($spacer-y * 1.5); }
+.p-x-md { padding-right:  ($spacer-x * 1.5); padding-left:   ($spacer-x * 1.5); }
+.p-y-md { padding-top:    ($spacer-y * 1.5); padding-bottom: ($spacer-y * 1.5); }
+
+.p-t-lg { padding-top:    ($spacer-y * 3); }
+.p-r-lg { padding-right:  ($spacer-y * 3); }
+.p-b-lg { padding-bottom: ($spacer-y * 3); }
+.p-l-lg { padding-left:   ($spacer-y * 3); }
+.p-x-lg { padding-right:  ($spacer-x * 3); padding-left:   ($spacer-x * 3); }
+.p-y-lg { padding-top:    ($spacer-y * 3); padding-bottom: ($spacer-y * 3); }
+{% endhighlight %}
+
+
 ## Text alignment
 
 Easily realign text to components with text alignment classes.
diff --git a/scss/_utilities-spacing.scss b/scss/_utilities-spacing.scss
new file mode 100644
index 0000000000..8d23e526a1
--- /dev/null
+++ b/scss/_utilities-spacing.scss
@@ -0,0 +1,69 @@
+//
+// Spacing
+//
+
+.m-a-0 { margin:        0; }
+.m-t-0 { margin-top:    0; }
+.m-r-0 { margin-right:  0; }
+.m-b-0 { margin-bottom: 0; }
+.m-l-0 { margin-left:   0; }
+
+.m-a { margin:        $spacer; }
+.m-t { margin-top:    $spacer-y; }
+.m-r { margin-right:  $spacer-x; }
+.m-b { margin-bottom: $spacer-y; }
+.m-l { margin-left:   $spacer-x; }
+.m-x { margin-right:  $spacer-x; margin-left: $spacer-x; }
+.m-y { margin-top:    $spacer-y; margin-bottom: $spacer-y; }
+
+.m-t-md { margin-top:    ($spacer-y * 1.5); }
+.m-r-md { margin-right:  ($spacer-y * 1.5); }
+.m-b-md { margin-bottom: ($spacer-y * 1.5); }
+.m-l-md { margin-left:   ($spacer-y * 1.5); }
+.m-x-md { margin-right:  ($spacer-x * 1.5); margin-left:   ($spacer-x * 1.5); }
+.m-y-md { margin-top:    ($spacer-y * 1.5); margin-bottom: ($spacer-y * 1.5); }
+
+.m-t-lg { margin-top:    ($spacer-y * 3); }
+.m-r-lg { margin-right:  ($spacer-y * 3); }
+.m-b-lg { margin-bottom: ($spacer-y * 3); }
+.m-l-lg { margin-left:   ($spacer-y * 3); }
+.m-x-lg { margin-right:  ($spacer-x * 3); margin-left:   ($spacer-x * 3); }
+.m-y-lg { margin-top:    ($spacer-y * 3); margin-bottom: ($spacer-y * 3); }
+
+.p-a-0 { padding:        0; }
+.p-t-0 { padding-top:    0; }
+.p-r-0 { padding-right:  0; }
+.p-b-0 { padding-bottom: 0; }
+.p-l-0 { padding-left:   0; }
+
+.p-a { padding:        $spacer; }
+.p-t { padding-top:    $spacer-y; }
+.p-r { padding-right:  $spacer-x; }
+.p-b { padding-bottom: $spacer-y; }
+.p-l { padding-left:   $spacer-x; }
+.p-x { padding-right:  $spacer-x; padding-left:   $spacer-x; }
+.p-y { padding-top:    $spacer-y; padding-bottom: $spacer-y; }
+
+.p-t-md { padding-top:    ($spacer-y * 1.5); }
+.p-r-md { padding-right:  ($spacer-y * 1.5); }
+.p-b-md { padding-bottom: ($spacer-y * 1.5); }
+.p-l-md { padding-left:   ($spacer-y * 1.5); }
+.p-x-md { padding-right:  ($spacer-x * 1.5); padding-left:   ($spacer-x * 1.5); }
+.p-y-md { padding-top:    ($spacer-y * 1.5); padding-bottom: ($spacer-y * 1.5); }
+
+.p-t-lg { padding-top:    ($spacer-y * 3); }
+.p-r-lg { padding-right:  ($spacer-y * 3); }
+.p-b-lg { padding-bottom: ($spacer-y * 3); }
+.p-l-lg { padding-left:   ($spacer-y * 3); }
+.p-x-lg { padding-right:  ($spacer-x * 3); padding-left:   ($spacer-x * 3); }
+.p-y-lg { padding-top:    ($spacer-y * 3); padding-bottom: ($spacer-y * 3); }
+
+
+// Positioning
+.pos-f-t {
+  position: fixed;
+  top: 0;
+  right: 0;
+  left: 0;
+  z-index: $zindex-navbar-fixed;
+}
diff --git a/scss/_utilities.scss b/scss/_utilities.scss
index 30b2f9b42e..d05c341335 100644
--- a/scss/_utilities.scss
+++ b/scss/_utilities.scss
@@ -36,116 +36,6 @@
   @include sr-only-focusable();
 }
 
-
-//
-// Spacing
-//
-
-.m-a-0 { margin:        0; }
-.m-t-0 { margin-top:    0; }
-.m-r-0 { margin-right:  0; }
-.m-b-0 { margin-bottom: 0; }
-.m-l-0 { margin-left:   0; }
-
-.m-a { margin:        $spacer; }
-.m-t { margin-top:    $spacer-y; }
-.m-r { margin-right:  $spacer-x; }
-.m-b { margin-bottom: $spacer-y; }
-.m-l { margin-left:   $spacer-x; }
-.m-x {
-  margin-right: $spacer-x;
-  margin-left:  $spacer-x;
-}
-.m-y {
-  margin-top:    $spacer-y;
-  margin-bottom: $spacer-y;
-}
-
-.m-t-md { margin-top:    ($spacer-y * 1.5); }
-.m-r-md { margin-right:  ($spacer-y * 1.5); }
-.m-b-md { margin-bottom: ($spacer-y * 1.5); }
-.m-l-md { margin-left:   ($spacer-y * 1.5); }
-.m-x-md {
-  margin-right: ($spacer-x * 1.5);
-  margin-left:  ($spacer-x * 1.5);
-}
-.m-y-md {
-  margin-top:    ($spacer-y * 1.5);
-  margin-bottom: ($spacer-y * 1.5);
-}
-
-.m-t-lg { margin-top:    ($spacer-y * 3); }
-.m-r-lg { margin-right:  ($spacer-y * 3); }
-.m-b-lg { margin-bottom: ($spacer-y * 3); }
-.m-l-lg { margin-left:   ($spacer-y * 3); }
-.m-x-lg {
-  margin-right: ($spacer-x * 3);
-  margin-left:  ($spacer-x * 3);
-}
-.m-y-lg {
-  margin-top:    ($spacer-y * 3);
-  margin-bottom: ($spacer-y * 3);
-}
-
-
-
-.p-a-0 { padding:        0; }
-.p-t-0 { padding-top:    0; }
-.p-r-0 { padding-right:  0; }
-.p-b-0 { padding-bottom: 0; }
-.p-l-0 { padding-left:   0; }
-
-.p-a { padding:        $spacer; }
-.p-t { padding-top:    $spacer-y; }
-.p-r { padding-right:  $spacer-x; }
-.p-b { padding-bottom: $spacer-y; }
-.p-l { padding-left:   $spacer-x; }
-.p-x {
-  padding-right: $spacer-x;
-  padding-left:  $spacer-x;
-}
-.p-y {
-  padding-top:    $spacer-y;
-  padding-bottom: $spacer-y;
-}
-
-.p-t-md { padding-top:    ($spacer-y * 1.5); }
-.p-r-md { padding-right:  ($spacer-y * 1.5); }
-.p-b-md { padding-bottom: ($spacer-y * 1.5); }
-.p-l-md { padding-left:   ($spacer-y * 1.5); }
-.p-x-md {
-  padding-right: ($spacer-x * 1.5);
-  padding-left:  ($spacer-x * 1.5);
-}
-.p-y-md {
-  padding-top:    ($spacer-y * 1.5);
-  padding-bottom: ($spacer-y * 1.5);
-}
-
-.p-t-lg { padding-top:    ($spacer-y * 3); }
-.p-r-lg { padding-right:  ($spacer-y * 3); }
-.p-b-lg { padding-bottom: ($spacer-y * 3); }
-.p-l-lg { padding-left:   ($spacer-y * 3); }
-.p-x-lg {
-  padding-right: ($spacer-x * 3);
-  padding-left:  ($spacer-x * 3);
-}
-.p-y-lg {
-  padding-top:    ($spacer-y * 3);
-  padding-bottom: ($spacer-y * 3);
-}
-
-
-
-// Positioning
-.pos-f-t {
-  position: fixed;
-  top: 0;
-  right: 0;
-  left: 0;
-  z-index: $zindex-navbar-fixed;
-}
-
 // Always hide an element with the `hidden` HTML attribute (from PureCSS).
 [hidden] {
   display: none !important;
diff --git a/scss/bootstrap.scss b/scss/bootstrap.scss
index 24c60d976a..5df72fe3b7 100644
--- a/scss/bootstrap.scss
+++ b/scss/bootstrap.scss
@@ -46,4 +46,5 @@
 
 // Utility classes
 @import "utilities";
+@import "utilities-spacing";
 @import "utilities-responsive";