bellmaker
Version:
Responsive CSS media query library for LESS and SASS, with device-agnostic and device-specific breakpoints
231 lines (205 loc) • 6.48 kB
text/less
// functionally passes Bootstrap 3.2.0
// modified from /bootstrap/less/variables.less
// ---------------------------------------------
@screen-bl-min: 320px;
@screen-ss-min: 480px;
@screen-xs-min: 640px;
@screen-sm-min: 768px;
@screen-md-min: 1024px;
@screen-lg-min: 1280px;
@screen-xl-min: 1440px;
@container-baseline: @pw_baseline;
@container-xx-small: @pw_2x_small;
@container-x-small: @pw_x_small;
@container-tablet: @pw_small;
@container-desktop: @pw_medium;
@container-large-desktop: @pw_large;
@container-bl: @pw_baseline;
@container-ss: @pw_2x_small;
@container-xs: @pw_x_small;
@container-sm: @pw_small;
@container-md: @pw_medium;
@container-lg: @pw_large;
@container-xl: @pw_large;
// So media queries don't overlap when required, provide a maximum
@screen-bl-max: (@screen-ss-min - 1);
@screen-ss-max: (@screen-xs-min - 1);
@screen-xs-max: (@screen-sm-min - 1);
@screen-sm-max: (@screen-md-min - 1);
@screen-md-max: (@screen-lg-min - 1);
@screen-lg-max: (@screen-xl-min - 1);
// ---------------------------------------------
// ---------------------------------------------
// modified from /bootstrap/less/mixins/grid-framework.less
// ---------------------------------------------
.make-grid-columns() {
// Common styles for all sizes of grid columns, widths 1-12
.col(@index) when (@index = 1) { // initial
@item: ~".col-bl-@{index}, .col-ss-@{index}, .col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}, .col-xl-@{index}";
.col((@index + 1), @item);
}
.col(@index, @list) when (@index =< @grid-columns) { // general; "=<" isn't a typo
@item: ~".col-bl-@{index}, .col-ss-@{index}, .col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}, .col-xl-@{index}";
.col((@index + 1), ~"@{list}, @{item}");
}
.col(@index, @list) when (@index > @grid-columns) { // terminal
@{list} {
position: relative;
// Prevent columns from collapsing when empty
min-height: 1px;
// Inner gutter via padding
padding-left: (@grid-gutter-width / 2);
padding-right: (@grid-gutter-width / 2);
}
}
.col(1); // kickstart it
}
// ---------------------------------------------
// ---------------------------------------------
// modified from /bootstrap/less/mixins/grid.less
// ---------------------------------------------
// Generate the extra small columns
.make-bl-column(@columns; @gutter: @grid-gutter-width) {
position: relative;
float: left;
width: percentage((@columns / @grid-columns));
min-height: 1px;
padding-left: (@gutter / 2);
padding-right: (@gutter / 2);
}
.make-bl-column-offset(@columns) {
margin-left: percentage((@columns / @grid-columns));
}
.make-bl-column-push(@columns) {
left: percentage((@columns / @grid-columns));
}
.make-bl-column-pull(@columns) {
right: percentage((@columns / @grid-columns));
}
// Generate the small columns
.make-ss-column(@columns; @gutter: @grid-gutter-width) {
position: relative;
min-height: 1px;
padding-left: (@gutter / 2);
padding-right: (@gutter / 2);
@media (min-width: @screen-ss-min) {
float: left;
width: percentage((@columns / @grid-columns));
}
}
.make-ss-column-offset(@columns) {
@media (min-width: @screen-ss-min) {
margin-left: percentage((@columns / @grid-columns));
}
}
.make-ss-column-push(@columns) {
@media (min-width: @screen-ss-min) {
left: percentage((@columns / @grid-columns));
}
}
.make-ss-column-pull(@columns) {
@media (min-width: @screen-ss-min) {
right: percentage((@columns / @grid-columns));
}
}
// Generate the small columns
.make-xs-column(@columns; @gutter: @grid-gutter-width) {
position: relative;
min-height: 1px;
padding-left: (@gutter / 2);
padding-right: (@gutter / 2);
@media (min-width: @screen-xs-min) {
float: left;
width: percentage((@columns / @grid-columns));
}
}
.make-xs-column-offset(@columns) {
@media (min-width: @screen-xs-min) {
margin-left: percentage((@columns / @grid-columns));
}
}
.make-xs-column-push(@columns) {
@media (min-width: @screen-xs-min) {
left: percentage((@columns / @grid-columns));
}
}
.make-xs-column-pull(@columns) {
@media (min-width: @screen-xs-min) {
right: percentage((@columns / @grid-columns));
}
}
// Generate the large columns
.make-xl-column(@columns; @gutter: @grid-gutter-width) {
position: relative;
min-height: 1px;
padding-left: (@gutter / 2);
padding-right: (@gutter / 2);
@media (min-width: @screen-xl-min) {
float: left;
width: percentage((@columns / @grid-columns));
}
}
.make-xl-column-offset(@columns) {
@media (min-width: @screen-xl-min) {
margin-left: percentage((@columns / @grid-columns));
}
}
.make-xl-column-push(@columns) {
@media (min-width: @screen-xl-min) {
left: percentage((@columns / @grid-columns));
}
}
.make-xl-column-pull(@columns) {
@media (min-width: @screen-xl-min) {
right: percentage((@columns / @grid-columns));
}
}
// ---------------------------------------------
// ---------------------------------------------
// modified from /bootstrap/less/grid.less
// ---------------------------------------------
.container {
@media (min-width: @screen-bl-min) {
width: @container-bl;
}
@media (min-width: @screen-ss-min) {
width: @container-ss;
}
@media (min-width: @screen-xs-min) {
width: @container-xs;
}
@media (min-width: @screen-sm-min) {
width: @container-sm;
}
@media (min-width: @screen-md-min) {
width: @container-md;
}
@media (min-width: @screen-lg-min) {
width: @container-lg;
}
@media (min-width: @screen-xl-min) {
width: @container-xl;
}
}
.make-grid-columns();
.make-grid(bl);
@media (min-width: @screen-ss-min) {
.make-grid(ss);
}
@media (min-width: @screen-xs-min) {
.make-grid(xs);
}
@media (min-width: @screen-sm-min) {
.make-grid(sm);
}
@media (min-width: @screen-md-min) {
.make-grid(md);
}
@media (min-width: @screen-lg-min) {
.make-grid(lg);
}
@media (min-width: @screen-xl-min) {
.make-grid(xl);
}
// ---------------------------------------------
// ---------------------------------------------