Ratio Utilities

The ratio utilities provide a set of classes to adjust the aspect-ratio properties of elements.

.ratio

Applies the default border styling to an element.

css
  .ratio {
    width: 100%;
    aspect-ratio: var(--graupl-ratio, auto);
  }

.force-ratio

Ensures child elements maintain the aspect ratio.

css
  .force-ratio {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  .ratio:has(.force-ratio) {
    position: relative;
  }

Custom Ratio Properties

Used to customize ratio.

Custom PropertyDescriptionDefault Value
--graupl-ratioAAspect-ratio value used by .ratioauto

Aspect Ratio

Class NamePropertyValue
.one-by-one--graupl-ratio1
.two-by-one--graupl-ratio2 / 1
.four-by-three--graupl-ratio4 / 3
.four-by-one--graupl-ratio4 / 1
.sixteen-by-nine--graupl-ratio16 / 9
.three-by-two--graupl-ratio3 / 2
.eight-by-five--graupl-ratio8 / 5

Customization

To customize the ratio utilities, you can use the following variables.

VariableDescriptionDefault Value
$selector-baseBase selector for utility classes."."
$selector-prefixThe selector prefix for all utility classes.""
$selector-suffixThe selctor suffix for all utility classes.""
$selector-separatorThe selector separator for all utility classes.""
$use-importantAppends !important to generated utility declarations.true
$generate-base-utilitiesGenerates the base utility classes.true
$screen-awareEnables screen-aware utility variants.false
$theme-awareEnables theme-aware utility variants.false
$scheme-awareEnables scheme-aware utility variants.false
$state-awareEnables state-aware utility variants.false
$container-awareEnables container-aware utility variants.false
$screen-aware-selector-prefixPrefix to the screen-aware portion of utility selectors.""
$screen-aware-selector-suffixSuffix to the screen-aware portion of utility selectors.""
$screen-aware-selector-separatorSeparator inserted for screen-aware utility selectors."\\:"
$theme-aware-selector-prefixPrefix to the theme-aware portion of utility selectors.""
$theme-aware-selector-suffixSuffix to the theme-aware portion of utility selectors."-theme"
$theme-aware-selector-separatorSeparator inserted for theme-aware utility selectors."\\:"
$scheme-aware-selector-prefixPrefix to the scheme-aware portion of utility selectors.""
$scheme-aware-selector-suffixSuffix to the scheme-aware portion of utility selectors."-mode"
$scheme-aware-selector-separatorSeparator inserted for scheme-aware utility selectors."\\:"
$state-aware-selector-prefixPrefix to the state-aware portion of utility selectors.""
$state-aware-selector-suffixSuffix to the state-aware portion of utility selectors.""
$state-aware-selector-separatorSeparator inserted for state-aware utility selectors."\\:"
$container-aware-selector-prefixPrefix to the container-aware portion of utility selectors."cq\\:"
$container-aware-selector-suffixSuffix to the container-aware portion of utility selectors.""
$container-aware-selector-separatorSeparator inserted for container-aware utility selectors."\\:"
$utility-propertiesMap of utility properties.()
$utility-valuesMap of utility values.()
$utility-mapMap of utility property/value pairs.()

Responsive Variants

Generating responsive utility classes can be done by setting $screen-aware, $theme-aware, $scheme-aware, $state-aware, or $container-aware to true.

By default, screen-aware responsive utility classes are generated for ratio.

✏️ Note

For more information on responsive variants, refer to the Responsive utility classes documentation.