Чтобы выполнить мой CSS, я использую инфраструктуру SCSS inuitcss (https://github.com/inuitcss/inuitcss),, которая предоставляет утилиты для отзывчивых интервалов, которые выглядят так:
.u-1/3@mobile
.u-margin-bottom@mobile
Класс, подобный этому, следует «мобильному первому» подходу, который означает, что, если в состоянии планшета или рабочего стола есть изменения, его необходимо «перезаписать» или «отменить» с помощью другого служебного класса, который выглядит как это:
.u-1/2@tablet
.u-margin-bottom-none@tablet
Я бы хотел изменить это поведение, привязав некоторые из этих служебных классов только к их адаптивному состоянию, чтобы отмена не требовалась.
В настоящее время миксин, отвечающий за генерацию этих служебных классов, выглядит следующим образом (он использует Sass-mq):
@each $inuit-bp-name, $inuit-bp-value in $mq-breakpoints {
@include mq($from: $inuit-bp-name) {
@include inuit-widths($inuit-fractions, #{$inuit-widths-breakpoint-separator}#{$inuit-bp-name});
}
}
Чтобы достичь своей цели, мне пришлось бы адаптировать функцию @include mq(
для использования второго параметра, который будет выглядеть следующим образом:
@include mq($from: $inuit-bp-name, $to: [next $inuit-bp-name]) {
А вот мои проблемы:
Как получить следующее значение на карте?
Как бы я мог предотвратить ошибку, если следующего значения нет?
Мне по крайней мере удалось получить значение индекса, например:
@each $inuit-bp-name, $inuit-bp-value in $mq-breakpoints {
$i: index(($mq-breakpoints), ($inuit-bp-name $inuit-bp-value));
@debug "INDEX" $i;
}
Для более простого тестирования я подготовил кодовую ручку с этим кодом, который можно найти здесь:
https://codepen.io/rowild/pen/EOgvKy