如何在SCSS中获取数组的$values?

2024-04-18

我正在制作自己的插件,通过编写单个插件自动进行多个媒体查询@includeSCSS 中的行。

所以当我输入时@include medias($bp-values, width);,输出应该是这样的:

@media all and (min-width: 564px) {
    width: 200px;
}
@media all and (min-width: 768px) {
    width: 300px;
}
@media all and (min-width: 992px) {
    width: 400px;
}
@media all and (min-width: 1200px) {
    width: 500px;
}

这是代码:

$breakpoints: (
    564,
    768,
    992,
    1200
);

$bp-values: (
    width: (
        200px, 300px, 400px, 500px
    ),
    font-size: (
        20px, 30px, 40px, 50px
    )
);

@function gridnum($m, $v) {
    @return map-get($m, $v);
}

@mixin medias($map, $key) {
    $myList: map-get($map, $key);
    @each $value in $myList {
        $number: index($myList, $value);
        $grid: gridnum($breakpoints, $num);
        @if $value == $num {
            @media all and (min-width: $grid + px) {
                #{$key}: $value;
            }   
        } @else {
            @warn "There is an error to make @media queries.";
        }
    }
}

我需要的是得到$values of $breakpoints用于将其设置为 @media 查询宽度的前缀。

但代码没有运行,我得到了这个:

错误:未定义的变量:“$num”。

大多数闲置的解决方案是将 2 个 $map 合并到单个 @each 指令中,但似乎 SCSS 不支持此操作。

有什么方法可以解决这个问题吗?


在我看来,您不太了解地图和列表之间的区别。

该列表是一个array值:

$breakpoints: (
    564,
    768,
    992,
    1200
);

or

$breakpoints: 564, 768, 992, 1200;

or

$breakpoints: 564 768 992 1200;

So this @return map-get($m, $v);总会给你带来错误,因为$breakpoints不是地图。

映射有键和值:

 $breakpoints: (
        xs: 564,
        md: 768,
        lg: 992,
        xl: 1200
    );

为了帮助您完成项目,也许最好编写一个嵌套映射的映射:

$myMap:(
  xs:(
    min-width: 564px,
    width: 200px,
    font-size: 20px
  ),
  md:(
    min-width: 768px,
    width: 300px,
    font-size: 30px
  ),
  lg:(
    min-width: 992px,
    width: 400px,
    font-size: 40px
  ),
  xl:(
    min-width: 1200px,
    width: 500px,
    font-size: 50px
  )
);

与每个值的相关性更加清晰。现在我们可以编写一个 @mixin 来获取这些值:

@mixin medias($map, $key) {
  @each $keyMap, $valueMap in $map {
    @media all and (min-width: map-get($valueMap, min-width)) {
        #{$key}: map-get($valueMap, $key);
    }   
  }
}

现在我们可以将其包括在内!

@include medias($myMap, width);

这是您要求的结果:

@media all and (min-width: 564px) {
  width: 200px;
}

@media all and (min-width: 768px) {
  width: 300px;
}

@media all and (min-width: 992px) {
  width: 400px;
}

@media all and (min-width: 1200px) {
  width: 500px;
}

我发布了你的新 sass 文件,我认为更容易理解

$myMap:(
  xs:(
    min-width: 564px,
    width: 200px,
    font-size: 20px
  ),
  md:(
    min-width: 768px,
    width: 300px,
    font-size: 20px
  ),
  lg:(
    min-width: 992px,
    width: 400px,
    font-size: 20px
  ),
  xl:(
    min-width: 1200px,
    width: 500px,
    font-size: 20px
  )
);

@mixin medias($map, $key) {
  @each $keyMap, $valueMap in $map {
    @media all and (min-width: map-get($valueMap, min-width)) {
        #{$key}: map-get($valueMap, $key);
    }   
  }
}

@include medias($myMap, width);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在SCSS中获取数组的$values? 的相关文章

  • 列表项未正确删除(React)

    如果我的笔记应用程序能提供一些帮助 我将不胜感激 假设我的笔记列表中有 3 个笔记 我想删除列表顶部的注释 无论我尝试删除哪一个 总是首先删除列表最底部的注释 我检查了 React 控制台 应用程序组件状态中的注释数组表明它已正确删除 但从
  • 在 Scala 中将 Map[String, String] 转换为 Map[String, Int]

    我有一个 Map 其中键是 String 值是 Int 但表示为 String scala gt val m Map a gt 1 b gt 2 c gt 3 m scala collection immutable Map String
  • R 将 data.frame 转换为 json

    我正在尝试将 data frame 转换为 json 格式 我的 data frame 具有以下结构 a lt rep c Mario Luigi each 3 b lt sample 34 57 size length a df lt d
  • C 中的数组初始化

    我对以下代码有疑问 int main int array1 1 2 3 4 5 error in c warning in c int array2 1 2 3 4 5 int array3 5 1 2 3 4 5 这段代码在第 3 行给出
  • Android - 减少位图绘制的内存使用量

    我的应用程序中有一张地图 显示了 Gowalla 的位置 我使用带有简单默认标记的 ItemizedOverlay 但在绘制项目时 我将默认标记替换为从 Gowalla 下载 9 并缓存在磁盘上 的位置图标 问题是 如果屏幕上有很多位置 例
  • Python:使用 FOR 循环插入字典

    我已经在论坛中进行了搜索 但不明白是否可以使用以下构造将新条目插入到我的 Python 字典中 而不将其转换为列表 for x in range 3 pupils dictionary new key input Enter new key
  • 在 firebase 中存储空数组

    我的 firebase 应用程序与 React 一起使用 我可以注册用户 然后将信息记录到数据库中 我正在创建一个 约会应用程序 我想要某种方法来存储空数组 例如 matchers etc 我尝试过这样的事情 firebase databa
  • 如何在书架中取出整数钥匙?

    我想在架子上存储一个整数密钥 但是当我尝试将整数密钥存储在搁置中时 它给了我一个错误 Traceback most recent call last File write py line 12 in data id Id id Name n
  • 错误:找不到符号 array.add(element);

    我有一个程序 它从文件中读取 获取每个单词并将其作为字符串添加到数组中 我在将字符串添加到数组时遇到了一些麻烦 我收到错误 SortingWords java 73 error cannot find symbol array add el
  • 在 django 模板中显示字典键

    我想知道如何在 django 模板中显示字典键本身 字典示例 resources coin coin grain grain iron iron stone stone wood wood 模板 b Coin b upgrade coin
  • Zurb Foundation:半透明顶栏可能吗?

    有没有办法用 Zurb Foundation 制作一个半透明的顶栏 据我所知 我已经在我的 settings scss file topbar bg color topbar bg topbar dropdown bg topbar dro
  • 如何从字典构造defaultdict?

    如果我有d dict zip range 1 10 range 50 61 我怎样才能建立一个collections defaultdict出于dict 唯一的论点defaultdict似乎采取的是工厂功能 我必须初始化然后再经历原来的d并
  • Excel函数:引用单元格中的数组

    我在单元格 A1 中有一个数组 通过 A1 G6 J6 aa b ccc 1 现在我想将单元格 A1 用于 B1 中的数组公式 基本上B1应该是 B1 SUMPRODUKT C6 C12 B6 B12 G6 J6 但我不想直接引用 G6 J
  • 多维数组上的数组合并

    要么我是瞎子 要么我在任何地方都找不到这个问题 昨天我在合并数组时遇到了问题 我可以在 SO 的帮助下解决这个问题 今天 我再次遇到了合并数组的问题 但这一次是多维数组 我有一个数组 usergroup groups 和一个数组 userg
  • 在函数内部使用时,c 数组大小会发生变化

    我有这段代码 include
  • 将键上的对象数组和总和值减少到数组中

    我有以下对象 data name foo type fizz val 9 name foo type buzz val 3 name bar type fizz val 4 name bar type buzz val 7 并使用 loda
  • 创建一个类的所有常量的数组?

    我正在使用一个定义了近 20 个常量的类 因为我希望所有这些常量值都在一个数组中 我只想知道 有没有什么方法可以创建一个类的所有常量的数组 我尝试过compact https www php net manual en function c
  • 我如何在 C++ 中将数组存储到队列

    queue lt int gt qq for int i 0 i lt N i int cc 2 i i 1 qq push cc N很大但不精确 所以我想使用队列 我想存储很多数组来排队 但是 qq 存储的数组是同一个 我该怎么做 你的代
  • 在php中如何设置数组的大小?

    我只想在 php 中设置数组的大小 而不必用任何值填充它 我怎么做 Use 固定阵列 http php net SplFixedArray对于固定大小的数组 array new SplFixedArray 3 array 0 1 array
  • 如何将向量转换为数组

    我如何转换std vector

随机推荐

  • 改变图例ggplot2中的形状

    这是我的数据 head pcf IID POP PC1 PC2 PC3 PC4 PC5 shape 1 HG01113 CLM 0 00284857 0 01432160 0 01585010 0 024035900 0 01479180
  • 在 Jupyter Notebook for Anaconda3 中导入自定义 .py 文件

    我在 Mac 上的哪里存储 Anaconda3 的自定义 py 文件 以便我可以将它们作为包导入到 Jupyter Notebook 中 如果插入 您可以将它们存储在任何地方 import os import sys sys path ap
  • 微软机器人框架上的对话机器人可能吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否有可能使用微软的机器人框架建立一个对话机器人 我目前正在使用 Luis 和 Qna Maker 的组合 但它仍然是一个单一的问答机
  • 扩展C++字符串成员函数

    我需要进行不区分大小写的查找 并发现以下代码可以解决问题 bool ci equal char ch1 char ch2 return toupper unsigned char ch1 toupper unsigned char ch2
  • AngularJS 和休息服务

    我最近开始尝试AngularJS 我正在构建一个简单的 html5 应用程序来更新MySQL数据库 索引 html
  • 获取 LinkedIn 分享计数 JSONP

    使用 LinkedIn API 我想获取 URL 的分享计数 https www linkedin com countserv count share url http www linkedin com format json 但这给了我一
  • 从Java调用Android WebView中的jQuery函数?

    我正在尝试调用在 html 中定义的 javascript 函数 喜欢 WebView loadUrl javascript hoge 我可以调用非 jQuery 函数 但无法调用我在 document ready function jQu
  • IllegalStateException:getAttribute:会话已失效

    我的第一个 JSF IceFaces 版本 1 8 2 应用程序在 JBoss 5 1 0 上运行时遇到问题 一段时间后我收到一个异常 告诉我有关会话问题 这很奇怪 因为我根本不在我的代码中使用会话 以下日志显示由于此错误 来自 JBoss
  • 指向动态分配的 boost multi_array 中的类的指针,未编译

    我对 C 和 Boost 还很陌生 我想要 world 类的对象有一个名为 chunk 类型为 octreenode 的数组 以前我有一个普通的一维数组 这工作得很好 现在我尝试转向使用具有 Boost 的 multi array 功能的
  • 使用 PHP 从多选下拉列表中获取数据并插入到 MySQL 中

    我的数据库中有一个使用以下命令创建的日期列表SET数据类型 SET Mon Tue Wed Thr Fri Sat Sun 我希望用户能够使用多选下拉列表选择多天放入数据库
  • 如何在 WPF 中按名称查找样式触发器嵌入元素?

    首先 问题的核心 如果通过样式触发器将一个元素指定为 ContentControl 的内容 我似乎无法按名称找到它 现在 了解更多详细信息 我有一个面板 其布局和功能根据其数据上下文而有很大差异 这是来自错误库的错误 当该错误为空时 它是一
  • 根据合并请求触发 gitlab-ci 中的作业

    是否可以仅根据合并请求从 gitlab ci 运行作业 现在 我们有一个包含大量测试的大型整体项目 但我们只想在合并到分支 master 之前运行测试 嗯 目前还没有内置 但是您自己也不是不可能 Gitlab 允许trigger https
  • 支持 __getitem__ 的类的 Python 类型提示

    我想向一个函数添加类型提示 该函数将接受带有 getitem 方法 例如 在 def my function hasitems locator hasitems locator 我不想限制hasitems成为特定类型 例如list or d
  • 如何将查询字符串传递给backbone.js 路由

    我正在使用 Backbone js 和 jQuery mobile jQuery 移动路由被禁用 我仅将库用于 UI 除了选择页面转换之外 我一切正常 我需要将页面转换 向上切片 淡入淡出 向下滑动 传递到主干路由器 因为转换根据用户来自的
  • 获取数据工厂中单个管道执行的成本

    我正在考虑使用 Azure 数据工厂 V2 进行集成导入 并想知道是否有办法跟踪正在运行的各个管道的成本 例如 如果我有 3 个管道 代表 3 个不同的集成 是否有办法查看每个管道产生的成本 还有一种方法可以近乎实时地执行此操作 以便在一个
  • 我们应该使用 setTargetFragment() 吗?我认为 Fragments 不应该互相通信

    Android开发者教程建议我使用片段的宿主活动来传递数据等等 那么为什么有一个设置 获取目标片段方法呢 到目前为止 我的应用程序包含一个主机活动和一个片段 其中有一个启动按钮DialogFragment 其中有一个按钮可以启动另一个Dia
  • Pandas 会影响 Rapidfuzz 匹配的结果吗?

    我正在碰壁 如果我在 pandas 数据帧内运行 Rapidfuzz 以及单独运行它 它会为字符串分数相似性提供不同的结果吗 为什么地址相似度 2 和最后一行的结果不同 from rapidfuzz import process utils
  • 在 Android 中使用带有自定义标签的块模板引擎

    我正在尝试在 android 中使用 chunk 我需要这样的东西 Suppose 以下是标签 tags 世界 世界 c 丹尼斯 里奇 苹果 工作 Input HELLO world C 是由 c 而java是由 java 编写的 hola
  • 在 R 中安装插入符包时出现依赖问题

    我正在尝试安装 R 包caret 这给了我ERROR dependencies ggplot2 reshape2 BradleyTerry2 are not available for package caret 我尝试单独安装其中的每一个
  • 如何在SCSS中获取数组的$values?

    我正在制作自己的插件 通过编写单个插件自动进行多个媒体查询 includeSCSS 中的行 所以当我输入时 include medias bp values width 输出应该是这样的 media all and min width 56