From 8f07f53d8ce878de48ea83bd2ccd0732359e9f18 Mon Sep 17 00:00:00 2001 From: Jirka Vebr Date: Wed, 5 Jul 2017 12:34:29 -0500 Subject: [PATCH 1/2] Media mixin: support arbitrary units --- src/styles/mixins/media.sass | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/styles/mixins/media.sass b/src/styles/mixins/media.sass index 254766d..0f60de8 100644 --- a/src/styles/mixins/media.sass +++ b/src/styles/mixins/media.sass @@ -19,11 +19,15 @@ +media(123M) // @media (max-width: 456px) + +media(123em 456Mem) + // @media (min-width: 123em) and (max-width: 456em) + +media($break480 '(screen)', 300 500M, $landscape) // @media (min-width: 480px) and (screen), (min-width: 300px) and (max-width: 500px), (orientation: landscape) =media($breakpoints...) + $MAX: 'M' $media: '' $disjunctionCount: length($breakpoints) @@ -35,7 +39,18 @@ $literal: nth($conjunction, $j) @if type-of($literal) == number - $literal: '(#{if(unit($literal) == 'M', 'max', 'min')}-width: #{$literal / ($literal * 0 + 1)}px)' + $literalUnit: unit($literal) + $maxMode: str-slice($literalUnit, 0, str-length($MAX)) == $MAX + $extremum: 'min' + + @if $maxMode + $extremum: 'max' + $literalUnit: str-slice($literalUnit, str-length($MAX) + 1) + + @if $literalUnit == '' + $literalUnit: 'px' + + $literal: '(#{$extremum}-width: #{$literal / ($literal * 0 + 1)}#{$literalUnit})' $media: $media + $literal + if($j == $conjunctionCount, '', ' and ') From 81e5a38e7942d0bf1c76fb403eefdabacbc5aff8 Mon Sep 17 00:00:00 2001 From: Jirka Vebr Date: Fri, 28 Jul 2017 23:28:01 +0200 Subject: [PATCH 2/2] Media mixin: display an error message when given no arguments --- src/styles/mixins/media.sass | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/styles/mixins/media.sass b/src/styles/mixins/media.sass index 0f60de8..75f1332 100644 --- a/src/styles/mixins/media.sass +++ b/src/styles/mixins/media.sass @@ -31,6 +31,9 @@ $media: '' $disjunctionCount: length($breakpoints) + @if $disjunctionCount == 0 + @error "The media mixin expects at least one argument! None given." + @for $i from 1 through $disjunctionCount $conjunction: nth($breakpoints, $i) $conjunctionCount: length($conjunction)