Skip to content

Width

Use the spacing scale or a breakpoint. Width utilities also cover auto, full, viewport widths (screen, vw, svw, lvw, dvw), intrinsic widths (min, max, fit), fractions, and max-w-none.

🥷 Didyaknow?

To add new fraction denominators (e.g. eighths), add 8 to $layout-divisions in config.

Sass mixins

MixinCSS properties
w($key)width from a size, breakpoint, fraction, or viewport keyword
min-w($key)min-width from a size, breakpoint, fraction, or viewport keyword
max-w($key)max-width from a size, breakpoint, fraction, or viewport keyword
w-fullwidth: 100%
w-screenwidth: 100vw
w-autowidth: auto
w-fitwidth: fit-content
w-minwidth: min-content
w-maxwidth: max-content
min-w-fullmin-width: 100%
min-w-minmin-width: min-content
min-w-maxmin-width: max-content
min-w-fitmin-width: fit-content
max-w-fullmax-width: 100%
max-w-nonemax-width: none
max-w-minmax-width: min-content
max-w-maxmax-width: max-content
max-w-fitmax-width: fit-content

Accepted keys

w(), min-w(), and max-w() accept:

  • A size-scale, such as 24
  • A breakpoint name, like "md"
  • A fraction defined in $layout-divisions, like "1/2" or "2/3"
  • A viewport keyword: "screen", "vw", "svw", "lvw", or "dvw"
scss
.sidebar {
  @include crayon.w("1/2");
  @include crayon.min-w(64);
  @include crayon.max-w("lg");
}

.full-viewport {
  @include crayon.w("dvw");
}
sass
.sidebar
  +crayon.w("1/2")
  +crayon.min-w(64)
  +crayon.max-w("lg")

.full-viewport
  +crayon.w("dvw")

Responsive range mixin

Pass a base size followed by named breakpoint overrides, such as crayon.w-range(24, $md: 48, $lg: 96).

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

Utility classes

ClassProperty
w-{size}width: {size}
min-w-{size}min-width: {size}
max-w-{size}max-width: {size}
w-{breakpoint}width: {breakpoint width}
min-w-{breakpoint}min-width: {breakpoint width}
max-w-{breakpoint}max-width: {breakpoint width}
w-{n}/{d}width: {fraction}
min-w-{n}/{d}min-width: {fraction}
max-w-{n}/{d}max-width: {fraction}
w-autowidth: auto
w-fullwidth: 100%
w-screenwidth: 100vw
w-vwwidth: 100vw
w-svwwidth: 100svw
w-lvwwidth: 100lvw
w-dvwwidth: 100dvw
w-minwidth: min-content
w-maxwidth: max-content
w-fitwidth: fit-content
min-w-fullmin-width: 100%
min-w-screenmin-width: 100vw
min-w-minmin-width: min-content
min-w-maxmin-width: max-content
min-w-fitmin-width: fit-content
max-w-fullmax-width: 100%
max-w-screenmax-width: 100vw
max-w-nonemax-width: none
max-w-minmax-width: min-content
max-w-maxmax-width: max-content
max-w-fitmax-width: fit-content

Examples

Sass mixins

scss
.card {
  @include crayon.w(24);
  @include crayon.max-w(96);
}
sass
.card
  +crayon.w(24)
  +crayon.max-w(96)

Utility classes

html
<div class="w-24 max-w-96">Constrained width</div>
<div class="w-1/2">Half width</div>
<div class="min-w-1/2 max-w-2/3">Fractionally constrained width</div>
<div class="w-full">Full width</div>
<div class="w-vw">Viewport width</div>
<div class="w-fit">Fit-content width</div>

Sass functions

Use size() to look up a spacing-scale value for the width property.

scss
.sidebar {
  width: crayon.size(64);
}
sass
.sidebar
  width: crayon.size(64)

CSS variables

css
.sidebar {
  width: var(--size-64);
}