css - Sass 混合问题中的每个循环行为

标签 css sass

遇到一个 Sass 问题,这让我抓狂。基本上我有以下 Sass 代码:

$breakpoints: mobile 320px, tablet 760px, desktop 960px;

@mixin setbreakpoint($point) {
    @each $breakpoint in $breakpoints {
      @if $point == #{nth($breakpoint, 1)} {
        @media (min-width: #{nth($breakpoint, 2)}) { @content; }
      }
    }
}

.page-wrap {
  width: 75%;
  @include setbreakpoint(mobile) { content:"mobile"; }
  @include setbreakpoint(tablet) { content:"tablet"; }
  @include setbreakpoint(desktop) { content:"desktop"; }
}

@each $breakpoint in $breakpoints {
    .page-wrap-#{nth($breakpoint, 1)} { content:#{nth($breakpoint, 2)}; }
}

输出以下 css:

.page-wrap {
  width: 75%; }
  @media (max-width: 320px) {
    .page-wrap { content: "mobile"; } }
  @media (max-width: 760px) {
    .page-wrap { content: "mobile"; } }
  @media (max-width: 960px) {
    .page-wrap { content: "mobile"; } }
  @media (max-width: 320px) {
    .page-wrap { content: "tablet"; } }
  @media (max-width: 760px) {
    .page-wrap { content: "tablet"; } }
  @media (max-width: 960px) {
    .page-wrap { content: "tablet"; } }
  @media (max-width: 320px) {
    .page-wrap { content: "desktop"; } }
  @media (max-width: 760px) {
    .page-wrap { content: "desktop"; } }
  @media (max-width: 960px) {
    .page-wrap { content: "desktop"; } }

.page-wrap-mobile {
  content: 320px; }

.page-wrap-tablet {
  content: 760px; }

.page-wrap-desktop {
  content: 960px; }

问题是: 为什么 mixin each loop 产生 9 个结果,而 basic class each loop 产生 3 个结果?

最佳答案

这是因为这里的 if 语句:

@if $point == #{nth($breakpoint, 1)} {
    @media (min-width: #{nth($breakpoint, 2)}) { @content; }
}

您正在比较不同类型的变量。无论出于何种原因,编译器总是认为它们是相等的。您所要做的就是删除字符串插值,它会按预期工作:

@if $point == nth($breakpoint, 1) {
    // You don't need when displaying the value either...
    @media (min-width: nth($breakpoint, 2)) { @content; }
}

关于css - Sass 混合问题中的每个循环行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14583722/

相关文章:

javascript - 使用hammer.js 添加拖动动画

css - 为什么在 SASS 中使用伪选择器会出现 "Undefined variable"错误?

twitter-bootstrap - 从我的 scss 文件中使用 Bootstrap 的实用程序 API

Sass中数组的随机颜色

javascript - Materialise 下拉菜单在移动设备中禁用 Sly jQuery 滚动条

javascript - 子菜单(带有链接)位于(z 索引)主菜单图像后面

带 block 的 CSS Float

css - 在 SCSS 中转换此 CSS(同一个 child 不同的 parent )

jquery - 整页滚动到特定部分

css - 如何将样式(使用 CSS) "20201231123456"设置为 "20201231-123456"?