diff --git a/css.html b/css.html
index 5dcf17c9f7e4a4b82ccafa25a5fc524df76ec859..e6a48ad401be142ff96ab590675f992b2204c5fb 100644
--- a/css.html
+++ b/css.html
@@ -2254,6 +2254,34 @@ For example, <code>&lt;section&gt;</code> should be wrapped as inline.
         <span class="visible-lg">&#10004; Visible on large</span>
       </div>
     </div>
+    <div class="row responsive-utilities-test hidden-on">
+      <div class="col-xs-6 col-sm-6">
+        <span class="hidden-xs hidden-sm">Extra small and small</span>
+        <span class="visible-xs visible-sm">&#10004; Visible on x-small and small</span>
+      </div>
+      <div class="col-xs-6 col-sm-6">
+        <span class="hidden-md hidden-lg">Medium and large</span>
+        <span class="visible-md visible-lg">&#10004; Visible on medium and large</span>
+      </div>
+      <div class="clearfix visible-xs"></div>  
+      <div class="col-xs-6 col-sm-6">
+        <span class="hidden-xs hidden-md">Extra small and medium</span>
+        <span class="visible-xs visible-md">&#10004; Visible on x-small and medium</span>
+      </div>
+      <div class="col-xs-6 col-sm-6">
+        <span class="hidden-sm hidden-lg">Small and large</span>
+        <span class="visible-sm visible-lg">&#10004; Visible on small and large</span>
+      </div>
+      <div class="clearfix visible-xs"></div>  
+      <div class="col-xs-6 col-sm-6">
+        <span class="hidden-xs hidden-lg">Extra small and large</span>
+        <span class="visible-xs visible-lg">&#10004; Visible on x-small and large</span>
+      </div>
+      <div class="col-xs-6 col-sm-6">
+        <span class="hidden-sm hidden-md">Small and medium</span>
+        <span class="visible-sm visible-md">&#10004; Visible on small and medium</span>
+      </div>  
+    </div>
     <h4>Hidden on...</h4>
     <p>Here, green checkmarks indicate the element <strong>is hidden</strong> in your current viewport.</p>
     <div class="row responsive-utilities-test hidden-on">
@@ -2275,5 +2303,33 @@ For example, <code>&lt;section&gt;</code> should be wrapped as inline.
         <span class="hidden-lg">&#10004; Hidden on large</span>
       </div>
     </div>
+    <div class="row responsive-utilities-test hidden-on">
+      <div class="col-xs-6 col-sm-6">
+        <span class="visible-xs visible-sm">Extra small and small</span>
+        <span class="hidden-xs hidden-sm">&#10004; Hidden on x-small and small</span>
+      </div>
+      <div class="col-xs-6 col-sm-6">
+        <span class="visible-md visible-lg">Medium and large</span>
+        <span class="hidden-md hidden-lg">&#10004; Hidden on medium and large</span>
+      </div>
+      <div class="clearfix visible-xs"></div>
+      <div class="col-xs-6 col-sm-6">
+        <span class="visible-xs visible-md">Extra small and medium</span>
+        <span class="hidden-xs hidden-md">&#10004; Hidden on x-small and medium</span>
+      </div>
+      <div class="col-xs-6 col-sm-6">
+        <span class="visible-sm visible-lg">Small and large</span>
+        <span class="hidden-sm hidden-lg">&#10004; Hidden on small and large</span>
+      </div>
+      <div class="clearfix visible-xs"></div>
+      <div class="col-xs-6 col-sm-6">
+        <span class="visible-xs visible-lg">Extra small and large</span>
+        <span class="hidden-xs hidden-lg">&#10004; Hidden on x-small and large</span>
+      </div>
+      <div class="col-xs-6 col-sm-6">
+        <span class="visible-sm visible-md">Small and medium</span>
+        <span class="hidden-sm hidden-md">&#10004; Hidden on small and medium</span>
+      </div>
+    </div>
 
   </div>
diff --git a/less/responsive-utilities.less b/less/responsive-utilities.less
index 062d6820ce2a8aeb5b97ade1a9cb3b95caf3811c..c756b23615c073f05de2aa7b59b36e8e57fd9b1c 100644
--- a/less/responsive-utilities.less
+++ b/less/responsive-utilities.less
@@ -36,48 +36,84 @@
 // Visibility utilities
 
 .visible-xs {
-  .responsive-visibility();
-  @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
-    .responsive-invisibility();
+  .responsive-invisibility();
+  @media (max-width: @screen-xs-max) {
+    .responsive-visibility();
   }
-  @media (min-width: @screen-md) and (max-width: @screen-md-max) {
-    .responsive-invisibility();
+  &.visible-sm {
+    @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
+      .responsive-visibility();
+    }
   }
-  @media (min-width: @screen-lg) {
-    .responsive-invisibility();
+  &.visible-md {
+    @media (min-width: @screen-md) and (max-width: @screen-md-max) {
+      .responsive-visibility();
+    }    
+  }
+  &.visible-lg {
+    @media (min-width: @screen-lg) {
+      .responsive-visibility();
+    }    
   }
 }
 .visible-sm {
   .responsive-invisibility();
+  &.visible-xs {
+    @media (max-width: @screen-xs-max) {
+      .responsive-visibility();
+    }    
+  }
   @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
     .responsive-visibility();
   }
-  @media (min-width: @screen-md) and (max-width: @screen-md-max) {
-    .responsive-invisibility();
+  &.visible-md {
+    @media (min-width: @screen-md) and (max-width: @screen-md-max) {
+      .responsive-visibility();
+    }    
   }
-  @media (min-width: @screen-lg) {
-    .responsive-invisibility();
+  &.visible-lg {
+    @media (min-width: @screen-lg) {
+      .responsive-visibility();
+    }    
   }
 }
 .visible-md {
   .responsive-invisibility();
-  @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
-    .responsive-invisibility();
+  &.visible-xs {
+    @media (max-width: @screen-xs-max) {
+      .responsive-visibility();
+    }    
+  }
+  &.visible-sm {
+    @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
+      .responsive-visibility();
+    }
   }
   @media (min-width: @screen-md) and (max-width: @screen-md-max) {
     .responsive-visibility();
   }
-  @media (min-width: @screen-lg) {
-    .responsive-invisibility();
+  &.visible-lg {
+    @media (min-width: @screen-lg) {
+      .responsive-visibility();
+    }    
   }
 }
 .visible-lg {
   .responsive-invisibility();
-  @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
-    .responsive-invisibility();
+  &.visible-xs {
+    @media (max-width: @screen-xs-max) {
+      .responsive-visibility();
+    }    
   }
-  @media (min-width: @screen-md) and (max-width: @screen-md-max) {
-    .responsive-invisibility();
+  &.visible-sm {
+    @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
+      .responsive-visibility();
+    }
+  }
+  &.visible-md {
+    @media (min-width: @screen-md) and (max-width: @screen-md-max) {
+      .responsive-visibility();
+    }    
   }
   @media (min-width: @screen-lg) {
     .responsive-visibility();
@@ -85,48 +121,84 @@
 }
 
 .hidden-xs {
-  .responsive-invisibility();
-  @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
-    .responsive-visibility();
+  .responsive-visibility();
+  @media (max-width: @screen-xs-max) {
+    .responsive-invisibility();
   }
-  @media (min-width: @screen-md) and (max-width: @screen-md-max) {
-    .responsive-visibility();
+  &.hidden-sm {
+    @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
+      .responsive-invisibility();
+    }    
   }
-  @media (min-width: @screen-lg) {
-    .responsive-visibility();
+  &.hidden-md {
+    @media (min-width: @screen-md) and (max-width: @screen-md-max) {
+      .responsive-invisibility();
+    }    
+  }
+  &.hidden-lg {
+    @media (min-width: @screen-lg) {
+      .responsive-invisibility();
+    }    
   }
 }
 .hidden-sm {
   .responsive-visibility();
+  &.hidden-xs {
+    @media (max-width: @screen-xs-max) {
+      .responsive-invisibility();
+    }
+  }
   @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
     .responsive-invisibility();
   }
-  @media (min-width: @screen-md) and (max-width: @screen-md-max) {
-    .responsive-visibility();
+  &.hidden-md {
+    @media (min-width: @screen-md) and (max-width: @screen-md-max) {
+      .responsive-invisibility();
+    }    
   }
-  @media (min-width: @screen-lg) {
-    .responsive-visibility();
+  &.hidden-lg {
+    @media (min-width: @screen-lg) {
+      .responsive-invisibility();
+    }    
   }
 }
 .hidden-md {
   .responsive-visibility();
-  @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
-    .responsive-visibility();
+  &.hidden-xs {
+    @media (max-width: @screen-xs-max) {
+      .responsive-invisibility();
+    }    
+  }
+  &.hidden-sm {
+    @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
+      .responsive-invisibility();
+    }    
   }
   @media (min-width: @screen-md) and (max-width: @screen-md-max) {
     .responsive-invisibility();
   }
-  @media (min-width: @screen-lg) {
-    .responsive-visibility();
+  &.hidden-lg {
+    @media (min-width: @screen-lg) {
+      .responsive-invisibility();
+    }    
   }
 }
 .hidden-lg {
   .responsive-visibility();
-  @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
-    .responsive-visibility();
-  }
-  @media (min-width: @screen-md) and (max-width: @screen-md-max) {
-    .responsive-visibility();
+  &.hidden-xs {
+    @media (max-width: @screen-xs-max) {
+      .responsive-invisibility();
+    }    
+  }
+  &.hidden-sm {
+    @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
+      .responsive-invisibility();
+    }    
+  }
+  &.hidden-md {
+    @media (min-width: @screen-md) and (max-width: @screen-md-max) {
+      .responsive-invisibility();
+    }    
   }
   @media (min-width: @screen-lg) {
     .responsive-invisibility();