css - 如何使sass map-get返回完整的组合表达式

标签 css sass media-queries scss-mixins

我有一个像这样的 scss 对象

$device-media-queries: (
  mobile: (max-width: 639px),
  tablet: (max-width: 1024px) and (min-width: 640px),
  desktop: (min-width: 1025px)
);

我正在像这样的混合中使用 map-get

$target-device-media-query: map-get($device-media-queries, $device-description);

然而,在$device-descriptiontablet的情况下,$target-device-media-query仅成为最后一项在子句中,在本例中为 (min-width: 640px)

如何使 $target-device-media-query 等于两个表达式,因此:(max-width: 1024px) 和 (min-width: 640px) 这样我的媒体查询就不会搞砸,平板电脑样式也不会应用于桌面设备(由于 (min-width: 640px) 应用)?当我不使用 mixin 直接执行组合媒体查询时,一切正常。

最佳答案

这里的问题是 () 是 sass 映射分隔符。您应该在每个媒体查询周围使用引号:

$device-media-queries: (
  mobile: '(max-width: 639px)',
  tablet: '(max-width: 1024px) and (min-width: 640px)',
  desktop: '(min-width: 1025px)'
);

@media #{map-get($device-media-queries, tablet)} { }

关于css - 如何使sass map-get返回完整的组合表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58420564/

相关文章:

html - Bootstrap NavBar 与中心对齐的元素

javascript - 允许使用 javascript + LivePreview 换行

html - 输入无效时更改标签的颜色

javascript - 如何控制打印字体大小

javascript - 在移动设备中单击图标后显示菜单的简单方法是什么?

css - CSS 媒体查询是否阻止多个请求?

javascript - 如何使用 JavaScript 将 div 动态添加到数据表的 td 标记

html - 垂直(和水平)居中

html - 将模糊滤镜应用于背景,不会使我的 div 居中

sass - 我如何让 Sass 工作?