podcast.netzbegruenung.de/themes/zen/zen_tmp/assets/lib/typey/stylesheets/typey/mixins/_spacing.scss
Marian Steinbach eda64f71d8 Initial version
2020-01-18 00:32:07 +01:00

90 lines
3.2 KiB
SCSS

// Define spacing (with fallbacks).
//
// @param string $type
// The type of spacing: margin, padding, margin-top, etc.
// @param number|list|string $spacing
// Multiple of $base-line-height to be used or px value to be converted.
// Can be a SASS list using the same parameters as the CSS margin property:
// i.e. top right bottom left, 1 0 2 0.
// Can also be the string "auto" when used as margin.
// @param number|string $context
// (optional) Only used if em is the $base-unit. The value of the elements/parents
// font-size if it differs from $base-font-size. Specified as a t-shirt size or
// value in px.
@mixin spacing($property, $spacing, $context: $base-font-size) {
$allowed-types: "multiplier", "px", "list";
$type: typey-validator($spacing, $allowed-types);
$px-fallback-list: ();
$converted-list: ();
@each $x in $spacing {
@if $base-unit == rem {
$allowed-types: "multiplier", "px", "auto";
$type: typey-validator($x, $allowed-types);
@if $type == "multiplier" {
$spacing: $x * $base-line-height;
$px-fallback-list: join($px-fallback-list, $spacing, $separator: space);
}
@if $type == "px" {
$px-fallback-list: join($px-fallback-list, $x, $separator: space);
}
@if $type == "auto" {
$px-fallback-list: join($px-fallback-list, $x, $separator: space);
}
}
$spacing: spacing($x, $context);
$converted-list: join($converted-list, $spacing, $separator: space);
}
@if $base-unit == rem {
@if $rem-fallback == true {
#{$property}: $px-fallback-list;
}
}
#{$property}: $converted-list;
}
// Wrapper mixins for various spacing properties.
// These can be used to provide easily sized spacing in the base unit.
//
// @param number|list|string $x
// Multiple of $base-line-height to be used or px value to be converted.
// Can be a SASS list using the same parameters as the CSS margin property:
// i.e. top right bottom left, 1 0 2 0.
// Can also be the string "auto" when used as margin.
// @param number|string $context
// (optional) Only used if em is the $base-unit. The value of the elements/parents
// font-size if it differs from $base-font-size. Specified as a t-shirt size or
// value in px.
@mixin margin($x, $context: $base-font-size) {
@include spacing(margin, $x, $context);
}
@mixin margin-top($x, $context: $base-font-size) {
@include spacing(margin-top, $x, $context);
}
@mixin margin-bottom($x, $context: $base-font-size) {
@include spacing(margin-bottom, $x, $context);
}
@mixin margin-left($x, $context: $base-font-size) {
@include spacing(margin-left, $x, $context);
}
@mixin margin-right($x, $context: $base-font-size) {
@include spacing(margin-right, $x, $context);
}
@mixin padding($x, $context: $base-font-size) {
@include spacing(padding, $x, $context);
}
@mixin padding-top($x, $context: $base-font-size) {
@include spacing(padding-top, $x, $context);
}
@mixin padding-bottom($x, $context: $base-font-size) {
@include spacing(padding-bottom, $x, $context);
}
@mixin padding-left($x, $context: $base-font-size) {
@include spacing(padding-left, $x, $context);
}
@mixin padding-right($x, $context: $base-font-size) {
@include spacing(padding-right, $x, $context);
}