Skip to content

Range Mixins ​

Range mixins let you set a property across multiple breakpoints in a single call. Neat! The $base value applies at all sizes; named keyword arguments map breakpoint names to values at that width and above.

scss
/* Instead of this: */
.hero {
  @include crayon.p(4);
  @include crayon.screen("md") { @include crayon.p(8); }
  @include crayon.screen("lg") { @include crayon.p(12); }
}

/* Write this: */
.hero {
  @include crayon.p-range(4, $md: 8, $lg: 12);
}
sass
/* Instead of this: */
.hero
  +crayon.p(4)
  +crayon.screen("md")
    +crayon.p(8)
  +crayon.screen("lg")
    +crayon.p(12)

/* Write this: */
.hero
  +crayon.p-range(4, $md: 8, $lg: 12)

Any breakpoint name from $breakpoints in config works as a keyword $sm, $md, $lg, $xl, $xxl by default.

Example ​

scss
/* Heading that grows at breakpoints */
.page-title {
  @include crayon.text-size-range("xl", $md: "2xl", $lg: "4xl");
}

/* Card grid: 1 col, 2 at md, 3 at xl */
.card-grid {
  @include crayon.grid;
  @include crayon.grid-cols-range(1, $md: 2, $xl: 3);
  @include crayon.gap-range(4, $md: 6);
}
sass
/* Heading that grows at breakpoints */
.page-title
  +crayon.text-size-range("xl", $md: "2xl", $lg: "4xl")

/* Card grid: 1 col, 2 at md, 3 at xl */
.card-grid
  +crayon.grid
  +crayon.grid-cols-range(1, $md: 2, $xl: 3)
  +crayon.gap-range(4, $md: 6)

Reference ​

Spacing ​

Padding ​

MixinPurpose
p-range($base, $breakpoint-range...)Responsive padding
pt-range($base, $breakpoint-range...)Responsive top padding
pb-range($base, $breakpoint-range...)Responsive bottom padding
pl-range($base, $breakpoint-range...)Responsive left padding
pr-range($base, $breakpoint-range...)Responsive right padding
px-range($base, $breakpoint-range...)Responsive horizontal padding
py-range($base, $breakpoint-range...)Responsive vertical padding

Margin ​

MixinPurpose
m-range($base, $breakpoint-range...)Responsive margin
mt-range($base, $breakpoint-range...)Responsive top margin
mb-range($base, $breakpoint-range...)Responsive bottom margin
ml-range($base, $breakpoint-range...)Responsive left margin
mr-range($base, $breakpoint-range...)Responsive right margin
mx-range($base, $breakpoint-range...)Responsive horizontal margin
my-range($base, $breakpoint-range...)Responsive vertical margin

Gap ​

MixinPurpose
gap-range($base, $breakpoint-range...)Responsive row and column gap
gap-x-range($base, $breakpoint-range...)Responsive column gap
gap-y-range($base, $breakpoint-range...)Responsive row gap

Sizing ​

Width ​

MixinPurpose
w-range($base, $breakpoint-range...)Responsive width

Height ​

MixinPurpose
h-range($base, $breakpoint-range...)Responsive height

Size ​

MixinPurpose
size-range($base, $breakpoint-range...)Responsive width and height

Layout ​

MixinPurpose
grid-cols-range($base, $breakpoints...)Responsive grid columns
grid-rows-range($base, $breakpoints...)Responsive grid rows

Typography ​

MixinPurpose
text-size-range($base, $responsive...)Responsive font size and line height
text-weight-range($base, $responsive...)Responsive font weight
text-leading-range($base, $responsive...)Responsive line height
text-tracking-range($base, $responsive...)Responsive letter spacing

Borders ​

MixinPurpose
rounded-range($base, $breakpoint-range...)Responsive border radius
rounded-t-range($base, $breakpoint-range...)Responsive top corner radii
rounded-b-range($base, $breakpoint-range...)Responsive bottom corner radii
rounded-l-range($base, $breakpoint-range...)Responsive left corner radii
rounded-r-range($base, $breakpoint-range...)Responsive right corner radii