【发布时间】:2019-04-14 09:06:54
【问题描述】:
为了完成我的 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
我想通过将其中一些实用程序类仅绑定到它们的响应状态来改变这种行为,这样就不需要取消了。
目前,负责生成这些实用程序类的 mixin 如下所示(它使用 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;
}
为了更容易测试,我准备了一个带有此代码的 codepen,可以在这里找到: https://codepen.io/rowild/pen/EOgvKy
【问题讨论】:
-
我认为这个人为你写了解决方案:github.com/elcheio/sass-map-get-next-prev :-)
-
这看起来很棒,我认为这正是我所需要的 - 级长,非常感谢! - 您能否发布您的解决方案作为答案,然后我可以投票!
-
不客气! :-) 感谢@Robert Wildling 的提议,非常感谢!但这一次我什么也没做。我刚刚找到了一份出色的 Web 开发人员工作。他值得投票,而不是我;-)
-
感谢您的谦虚!!!但这不仅是为了给您一些分数,而且还表明该问题已得到肯定的回答,这可能对其他人有所帮助……那么无论如何我有机会说服您将您的解决方案发布为答案吗? :-D
-
你是对的!我们可以这样做:您为什么不完成您的工作,使其与开发人员的 map-get-next 函数一起使用,然后将其作为答案发布?我将是第一个投票的人! ;)