css - 如何使用断点使 mixin 助手响应?
问题描述
我想让这个 mixin 响应意味着它基于breakpoints生成媒体查询。
这是我的 SCSS 代码:
$grid-breakpoints: (
xs: 0,
sm: 576px,
md: 768px,
lg: 992px,
xl: 1200px,
xxl: 1400px
) !default;
@mixin overscroll-behavior-auto() {
-ms-scroll-chaining: chained;
overscroll-behavior: auto;
}
@mixin overscroll-behavior-contain() {
-ms-scroll-chaining: none;
overscroll-behavior: contain;
}
@mixin overscroll-behavior-none() {
-ms-scroll-chaining: none;
overscroll-behavior: none;
}
.overscroll-auto {
@include overscroll-behavior-auto();
}
.overscroll-contain {
@include overscroll-behavior-contain();
}
.overscroll-none {
@include overscroll-behavior-none();
}
@each $breakpoint in map-keys($grid-breakpoints) {
@include media-breakpoint-up($breakpoint) {}
}
我包括我的 sass 代码谢谢你们
解决方案
密码笔
我对overscroll-behavior()
. 主要是它不再overscroll-behavior-auto()
等overscroll-behavior-contain()
,但是:
overscroll-behavior($behavior, $breakpoint);
这是必要的,不能将相同的代码写三遍,因为您无法生成mixins
.
$overscrollBehavior: (
"auto": ["chained", "none" ],
"contain": ["none", "contain"],
"none": ["none", "none" ],
)!default;
$breakpoints: (
"xs": 0px,
"sm": 576px,
"md": 768px,
"lg": 992px,
"xl": 1200px,
"xxl": 1400px,
) !default;
@mixin overscroll-behavior($behavior, $breakpoint) {
$map: $overscrollBehavior;
@for $i from 1 through length($map) {
$label: nth(nth($map, $i), 1);
$values: nth(nth($map, $i), 2);
@if $behavior == $label {
$map: $breakpoints;
@for $i from 1 through length($map) {
$bp: nth(nth($map, $i), 1);
$bpValue: nth(nth($map, $i), 2);
@if $breakpoint == $bp {
@media (min-width: #{$bpValue}) {
-ms-scroll-chaining: unquote(nth($values, 1));
overscroll-behavior: unquote(nth($values, 2));
}
}
}
}
}
}
body {
@include overscroll-behavior(none, xs);
}
@media (min-width: 0px) {
body {
-ms-scroll-chaining: none;
overscroll-behavior: none;
}
}
如果这不是您想要的,请告诉我!
推荐阅读
- ios - 如何让类中的初始化方法等待 Firestore 在 Swift 4 中完成?
- sql - Asp.net使用实体框架运行join语句并在GridView中显示
- c - 如何检查数组元素中是否存储了某些内容
- javascript - Pug 表值未放在正确的列中
- json - 使用 IMDB api 结果坏 json
- javascript - ES6 中的对象解构
- html - 如何用百分比条制作边框
- python - Kivy buildozer Pil/Pillow 错误
- javascript - 使用 jQuery/ES5 克隆和修复横幅
- azure - Azure powershell runbook 不显示任何输出