-
-
Save wrabit/47767c82a7b62f4fe0d931b94a9b489b to your computer and use it in GitHub Desktop.
| /* | |
| Start Bootstrap style responsive spacer helper | |
| Utilities for spacing, text and float | |
| */ | |
| $spacer: 1rem !default; | |
| $spacers: () !default; | |
| $spacers: map-merge(( | |
| 0: 0, | |
| 1: ($spacer * .25), | |
| 2: ($spacer * .5), | |
| 3: $spacer, | |
| 4: ($spacer * 1.5), | |
| 5: ($spacer * 3) | |
| ), $spacers); | |
| $grid-breakpoints: ( | |
| xs: 0, | |
| mobile: 576px, // Added because I felt there needs to be more control for smaller devices | |
| tablet: $tablet, | |
| desktop: $desktop, | |
| widescreen: $widescreen, | |
| hd: $fullhd | |
| ) !default; | |
| @function breakpoint-min($name, $breakpoints: $grid-breakpoints) { | |
| $min: map-get($breakpoints, $name); | |
| @return if($min != 0, $min, null); | |
| } | |
| @mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) { | |
| $min: breakpoint-min($name, $breakpoints); | |
| @if $min { | |
| @media (min-width: $min) { | |
| @content; | |
| } | |
| } @else { | |
| @content; | |
| } | |
| } | |
| @function breakpoint-infix($name, $breakpoints: $grid-breakpoints) { | |
| @return if(breakpoint-min($name, $breakpoints) == null, "", "-#{$name}"); | |
| } | |
| @function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) { | |
| $n: index($breakpoint-names, $name); | |
| @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null); | |
| } | |
| @each $breakpoint in map-keys($grid-breakpoints) { | |
| @include media-breakpoint-up($breakpoint) { | |
| $infix: breakpoint-infix($breakpoint, $grid-breakpoints); | |
| @each $prop, $abbrev in (margin: m, padding: p) { | |
| @each $size, $length in $spacers { | |
| .is-#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; } | |
| .is-#{$abbrev}t#{$infix}-#{$size}, | |
| .is-#{$abbrev}y#{$infix}-#{$size} { | |
| #{$prop}-top: $length !important; | |
| } | |
| .is-#{$abbrev}r#{$infix}-#{$size}, | |
| .is-#{$abbrev}x#{$infix}-#{$size} { | |
| #{$prop}-right: $length !important; | |
| } | |
| .is-#{$abbrev}b#{$infix}-#{$size}, | |
| .is-#{$abbrev}y#{$infix}-#{$size} { | |
| #{$prop}-bottom: $length !important; | |
| } | |
| .is-#{$abbrev}l#{$infix}-#{$size}, | |
| .is-#{$abbrev}x#{$infix}-#{$size} { | |
| #{$prop}-left: $length !important; | |
| } | |
| } | |
| } | |
| // Some special margin utils | |
| .is-m#{$infix}-auto { margin: auto !important; } | |
| .is-mt#{$infix}-auto, | |
| .is-my#{$infix}-auto { | |
| margin-top: auto !important; | |
| } | |
| .is-mr#{$infix}-auto, | |
| .is-mx#{$infix}-auto { | |
| margin-right: auto !important; | |
| } | |
| .is-mb#{$infix}-auto, | |
| .is-my#{$infix}-auto { | |
| margin-bottom: auto !important; | |
| } | |
| .is-ml#{$infix}-auto, | |
| .is-mx#{$infix}-auto { | |
| margin-left: auto !important; | |
| } | |
| } | |
| } | |
| /** | |
| * Text | |
| */ | |
| @each $breakpoint in map-keys($grid-breakpoints) { | |
| @include media-breakpoint-up($breakpoint) { | |
| $infix: breakpoint-infix($breakpoint, $grid-breakpoints); | |
| .has-text#{$infix}-left { text-align: left !important; } | |
| .has-text#{$infix}-right { text-align: right !important; } | |
| .has-text#{$infix}-center { text-align: center !important; } | |
| } | |
| } | |
| /** | |
| * Float | |
| */ | |
| @each $breakpoint in map-keys($grid-breakpoints) { | |
| @include media-breakpoint-up($breakpoint) { | |
| $infix: breakpoint-infix($breakpoint, $grid-breakpoints); | |
| .is-float#{$infix}-left { float: left !important; } | |
| .is-float#{$infix}-right { float: right !important; } | |
| .is-float#{$infix}-none { float: none !important; } | |
| } | |
| } |
Thanks for writing this. Awesome.
I have trouble using the breakpoints right:
You write is is boostrap-oriented, so in Bootstrap it is supposed to be: {property}{sides}-{breakpoint}-{size}
Ported to BULMA means: is-{property}{sides}-{breakpoint}-{size}
So I assumed: Setting a padding-bottom = 0 on mobile would be class="is-pb-mobile-0"
I tried to follow up on your code and found line 69: .is-#{$abbrev}b#{$infix}-#{$size},
Is the breakpoint-name? So i would use it with: class="is-pbmobile-0"
Which also does not work. Can you give me a hint?
@areindl yes so is-pb-mobile-0
Did you verify in devtools that the style set and it is not overridden?
@areindl breakpoint-infix automatically adds the '-' so all words should be hyphenated
@wrabit - thanks for your reply. I am still puzzled.
So i just another test in a different part of my site.
I have a headline and I added is-mb-5 is-mb-mobile-0
My expectation:
-
On tablet + desktop devices the margin-bottom is 5
-
On mobile, the margin-bottom is 0
Somehow, there is an issue with the media query. Here is a screenshot of dev tools:
So the media query seems to be wrong or I have to think vice versa
@areindl It doesn't work how you are expecting it to, Bulma and Bootstrap use a mobile-first approach. In the case of your example .is-0 .is-mb-tablet-5 should get you there.
.is-mb-0 <!-- sets all from mobile to largest size margin-bottom: 0
.is-mb-tablet-5 <!-- sets all sizes from tablet to largest size to margin-bottom: 3rem
This leaves the smallest breakpoints up to, but not including tablet, as margin 0.

@webmasterdevlin $tablet is predefined in Bulma along with $desktop etc. (assuming you are importing Bulma's scss)