SASS Mixin Help - Точка останова - PullRequest
0 голосов
/ 17 марта 2019

Попытка настроить следующий миксин SASS.Прямо сейчас он создает один и тот же набор CSS для каждой точки останова, однако, когда я добираюсь до точек останова «sm» и «xs», я хочу, чтобы mixin немного изменил код (см. Изменение ниже кода).

$columns: 12;
$gutter: 40px;
$margin: 20px;
$max-width: 100%;

$breakpoints: lg 1199.98px 1200px,
md 991.98px 992px,
sm 767.98px 778px,
xs 575.98px 576px !default;

@each $breakpoint in $breakpoints {
  $name: nth($breakpoint, 1);
  $size: nth($breakpoint, 2);
  $container: nth($breakpoint, 3);

  @media only screen and (max-width: $size) {
    .container {
      max-width: $container;
    }

    @for $i from 1 through $columns {
      .col-#{$name}-#{$i} {
        flex-basis: calc((100% / #{$columns} * #{$i}) - #{$gutter});
        max-width: calc((100% / #{$columns} * #{$i}) - #{$gutter});

        &.fluid {
          flex-basis: calc(100% / #{$columns} * #{$i});
          max-width: calc(100% / #{$columns} * #{$i});
          margin-left: 0;
          margin-right: 0;
        }
      }
    }
  }
}

В контрольных точках "sm" я хочу изменить формулу на чтение ...

flex-basis: calc((100% / #{$columns} * #{$i}) - (#{$gutter} / 2));
max-width: calc((100% / #{$columns} * #{$i}) - (#{$gutter} / 2));

В контрольных точках "xs" я хочу изменить формулу на чтение ...

flex-basis: calc((100% / #{$columns} * #{$i}) - (#{$gutter} / 3));
max-width: calc((100% / #{$columns} * #{$i}) - (#{$gutter} / 3));

1 Ответ

0 голосов
/ 17 марта 2019

Самое простое решение - передать значение gutter в качестве параметра в @each directive.
Но, возможно, вы захотите сохранить глобальное значение gutter, поэтому здесь есть альтернатива:

Во-первых, вы можете сократить это:

@each $breakpoint in $breakpoints {
  $name: nth($breakpoint, 1);
  $size: nth($breakpoint, 2);
  $container: nth($breakpoint, 3);
  // ...
}

По этому:

@each $name, $size, $container in $breakpoints {
  // ...
}

Затем вам нужно будет добавить новое значение в ваш список. Он будет использоваться для деления значения желоба.
Обратите внимание, что ваш список полностью действителен, но я бы предложил использовать следующий формат, который гораздо более удобочитаем.

$breakpoints: (
  (lg, 1199.98px, 1200px, 1),
  (md, 991.98px, 992px, 1),
  (sm, 767.98px, 778px, 2),
  (xs, 575.98px, 576px, 3)
) !default;

Теперь вы можете включить это новое значение в качестве параметра:

@each $name, $size, $container, $divide in $breakpoints {
  // ...
}

И используйте это так:

flex-basis: calc((100% / #{$columns} * #{$i}) - #{$gutter} / #{$divide});
max-width: calc((100% / #{$columns} * #{$i}) - #{$gutter} / #{$divide});

Полный код можно посмотреть здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...