Skip to content
Snippets Groups Projects
_03-mixins.scss 1.85 KiB
Newer Older
M Miller's avatar
M Miller committed
/////////////////////
// General Mixins (put specific ones in component files where applicable)

/// Mixin - Clearfix.
/// Adds clearfix based on http://bourbon.io/docs/#clearfix
/// use example =   @include cleafix

@mixin clearfix {
  &::after {
    clear: both;
    content: '';
    display: table;
  }
}

/// Mixin - list-reset
/// Reset list item defaults when no margin, padding, list styles needed
@mixin list-reset {
  list-style: none;
  margin: 0;
  padding: 0;
}

/// Mixin - With Icon
/// Precede Text with SVG icon
@mixin with-icon {
  background-size: cover;
  content: '';
  display: inline-block;
  margin-right: 0.1em;
  padding: 0.8em;
}

/// Mixin - Wrapper
/// Outer container mixin for large screens
@mixin wrapper(
  $container-max-width: $max-width,
  $outer-container-break: $small,
  $v-margin: 0,
  $v-padding: 0,
  $h-padding: 4%,
  $h-padding-large: $h-padding
) {
  max-width: #{$container-max-width};
  width: 100%;
  margin: #{$v-margin} auto;
  padding: #{$v-padding} #{$h-padding};

  @include breakpoint($outer-container-break) {
    padding: #{$v-padding} #{$h-padding-large};
  }

  @include breakpoint($container-max-width) {
    padding-left: calc(
      #{$h-padding-large} + calc(-50vw + calc(#{$container-max-width} / 2))
    );
    padding-right: calc(
      #{$h-padding-large} + calc(-50vw + calc(#{$container-max-width} / 2))
    );
  }
}

/// Use the breakout mixin for elements that should be edge-to-edge
/// Even when a parent container uses the wrapper mixin
@mixin breakout($v-padding: 5rem) {
  margin-left: calc(-50vw + 50%);
  margin-right: calc(-50vw + 50%);
  padding-left: calc(#{$v-padding} + calc(-50vw + 50%));
  padding-right: calc(#{$v-padding} + calc(-50vw + 50%));
}

/// Mixin - Standard Margin
@mixin margin {
  margin-bottom: 1em;
}

@mixin no-bottom {
  margin-bottom: 0;
}

@mixin short-bottom {
  margin-bottom: 0.25em;
}