SASS中的嵌套类

时间:2012-05-28 15:30:13

标签: css compass-sass sass

我有以下代码:

        li {
            a {
                /* style removed for brevity */
                &:hover {   
                    color:#4f9269;
                    @include background-image(linear-gradient(top, #fff, #f0f6f2));
                }
            }
            &.active a {
                color:#4f9269;
                @include background-image(linear-gradient(top, #fff, #f0f6f2));
            }
        }

当菜单项处于活动状态时,活动类将应用于li,因此我不得不像这样应用CSS。

我也一直在写一个混音:

@mixin activestate() {
    color:#4f9269;
    @include background-image(linear-gradient(top, #fff, #f0f6f2));
}

然后这样做:

        li {
            a {
                /* style removed for brevity */
                &:hover {   
                    activestate();
                }
            }
            &.active a {
                activestate();
            }
        }

通常使用CSS我会写这样的东西

li a:hover, li.active a {
    /* active styles here */
}

我想知道SASS是否有办法实现类似的输出?

2 个答案:

答案 0 :(得分:2)

SCSS可以使用与CSS相同的语法。而且,CSS与SCSS完全兼容。所以你可以使用:

li a:hover, li.active a {
   @include activestate();
}

或者在SASS:

li:hover, li.active a 
  +activestate()

答案 1 :(得分:1)

或者没有写一个额外的mixin:

li {
  /* styles removed for brevity */
  a {
    /* styles removed for brevity */
  }
  &.active a,
  a:hover {
    color:#4f9269;
    @include background-image(linear-gradient(top, #fff, #f0f6f2));
  }
}