Sass 使用带Susy的欧米茄从4列更改为3列失败

Sass 使用带Susy的欧米茄从4列更改为3列失败,sass,susy-compass,Sass,Susy Compass,这当然是用一些代码最容易显示的: .container{ .gallery { ul { @include clearfix; } li { @include span-columns(1,4); &:nth-child(4n) { @include omega; } } }

这当然是用一些代码最容易显示的:

.container{
    .gallery {
        ul {
            @include clearfix;
        }
        li {
            @include span-columns(1,4);

            &:nth-child(4n) {
                @include omega;
            }
        }
    }

    @include at-breakpoint($large-columns) {
        .gallery {
            li {
                @include span-columns(1,3);

                &:nth-child(4n) {
                    @include remove-omega;
                }
                &:nth-child(3n) {
                    @include omega;
                }
            }
        }
    }
}
我从4列开始,第4列是欧米茄,然后我想换成3列,第3列是欧米茄。正确的元素被正确地左/右浮动,但每四个元素的右边距都是错误的

我这样做对吗?或者更确切地说,我做错了什么

谢谢你的阅读,
/Andy

您的问题具有误导性,因为我们不知道
$large columns
的值。我假设该值可能是
59em3
——但这非常有效。看起来这个值实际上只是
59em
——这就是问题的根源

如果设置的断点没有列计数,Susy将根据
$column width
$gotter width
设置计算新上下文。这不会给span columns(1,3)造成任何问题,因为您使用显式上下文(3)覆盖了全局上下文。但是
remove omega
还需要知道上下文(为了应用排水沟),而您没有通过一个,因此它使用全局上下文

您有两个选择:

  • 您可以更改断点:
    位于断点(59em 3)
  • 您可以传递一个显式上下文:
    删除omega(3)

  • 你能在codepen或jsfiddle上显示工作代码吗?嗯,不太可能,因为它取决于Susy。。。基本上,预处理器的输出是错误的。你可以在这里看到:我已经测试了你的密码笔,它似乎工作得很好。最初它将是4列,但当最小宽度达到59em时,它将变成3列。这就是你所期望的工作方式吗?看看mediaquery中4n元素右边的边距,这就是我上面要问的;右边距错误。$列宽=4em,$边沟宽度=1em,$大列=12。抱歉,我没有意识到这些值会对计算产生任何影响?有什么价值观吗?我不太明白。。。我没有明确删除上面第四项的欧米茄吗?您正在删除欧米茄,但您不理解上下文影响计算的方式。断点正在将上下文设置为12列,但
    span columns(1,3)
    将使用上下文3覆盖该设置。您需要确保
    span列
    remove omega
    获得相同的上下文。
    span列(4)
    remove omega
    (两者都假设全局上下文为12),或者
    span列(1,3)
    remove omega(3)
    (两者都使用3)。或者,您可以更改断点,在断点处使用
    全局设置上下文3(59em 3)
    <代码>删除欧米茄相对于上下文添加边沟。