如何包含具有给定参数的sass文件

如何包含具有给定参数的sass文件,sass,Sass,我想为我未来的模板使用“默认”sass代码,但找不到变量。我正在寻找一种将变量传递到布局文件的方法。我知道@import不支持参数,但我找不到其他解决方案。有关更多信息,请参阅下面的代码 绿色.scss $primary-color: #6ddba4; $secondary-color: #6ddba4; $tertiary-color: #6ddba4; @import 'layout/layout.scss'; .home_icon { border: 1px solid $p

我想为我未来的模板使用“默认”sass代码,但找不到变量。我正在寻找一种将变量传递到布局文件的方法。我知道
@import
不支持参数,但我找不到其他解决方案。有关更多信息,请参阅下面的代码

绿色.scss

$primary-color: #6ddba4;
$secondary-color: #6ddba4;
$tertiary-color: #6ddba4;

@import 'layout/layout.scss';
.home_icon {

    border: 1px solid $primary-color !important;
    color: $primary-color !important;

    &:hover {

        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;

    }

}
$primary-color: green;
$secondary-color: blue;
$tertiary-color: red;

@import "./layout";
$primary-color: red;
$secondary-color: blue;
$tertiary-color: orange;

@import "./layout";
.home_icon {
    border: 1px solid $primary-color !important;
    color: $primary-color !important;
    &:hover {
        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;
    }
}

// Add as much as you want here and reference your variables
layout.scss

$primary-color: #6ddba4;
$secondary-color: #6ddba4;
$tertiary-color: #6ddba4;

@import 'layout/layout.scss';
.home_icon {

    border: 1px solid $primary-color !important;
    color: $primary-color !important;

    &:hover {

        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;

    }

}
$primary-color: green;
$secondary-color: blue;
$tertiary-color: red;

@import "./layout";
$primary-color: red;
$secondary-color: blue;
$tertiary-color: orange;

@import "./layout";
.home_icon {
    border: 1px solid $primary-color !important;
    color: $primary-color !important;
    &:hover {
        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;
    }
}

// Add as much as you want here and reference your variables

SASS将查看所有
.scss
文件(和部分文件),并将它们一起编译为输出
.css
文件。因此,您不能使用JavaScript直接操作SASS变量,因为在运行JavaScript时这些变量已经不存在了

为了解决这个问题并实现您想要的,您将需要由SASS生成多个样式表,然后您可以使用JavaScript替换这些样式表

它可能看起来像这样:

绿色.scss

$primary-color: #6ddba4;
$secondary-color: #6ddba4;
$tertiary-color: #6ddba4;

@import 'layout/layout.scss';
.home_icon {

    border: 1px solid $primary-color !important;
    color: $primary-color !important;

    &:hover {

        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;

    }

}
$primary-color: green;
$secondary-color: blue;
$tertiary-color: red;

@import "./layout";
$primary-color: red;
$secondary-color: blue;
$tertiary-color: orange;

@import "./layout";
.home_icon {
    border: 1px solid $primary-color !important;
    color: $primary-color !important;
    &:hover {
        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;
    }
}

// Add as much as you want here and reference your variables
red.scss

$primary-color: #6ddba4;
$secondary-color: #6ddba4;
$tertiary-color: #6ddba4;

@import 'layout/layout.scss';
.home_icon {

    border: 1px solid $primary-color !important;
    color: $primary-color !important;

    &:hover {

        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;

    }

}
$primary-color: green;
$secondary-color: blue;
$tertiary-color: red;

@import "./layout";
$primary-color: red;
$secondary-color: blue;
$tertiary-color: orange;

@import "./layout";
.home_icon {
    border: 1px solid $primary-color !important;
    color: $primary-color !important;
    &:hover {
        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;
    }
}

// Add as much as you want here and reference your variables
\u layout.scss

$primary-color: #6ddba4;
$secondary-color: #6ddba4;
$tertiary-color: #6ddba4;

@import 'layout/layout.scss';
.home_icon {

    border: 1px solid $primary-color !important;
    color: $primary-color !important;

    &:hover {

        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;

    }

}
$primary-color: green;
$secondary-color: blue;
$tertiary-color: red;

@import "./layout";
$primary-color: red;
$secondary-color: blue;
$tertiary-color: orange;

@import "./layout";
.home_icon {
    border: 1px solid $primary-color !important;
    color: $primary-color !important;
    &:hover {
        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;
    }
}

// Add as much as you want here and reference your variables
这将生成一个
green.css
文件和一个
red.css
文件,然后可以根据需要在HTML中进行交换

我还将上面的所有内容粘贴到了一个示例中,这样您就可以更好地对其进行可视化并查看输出CSS



不过,作为旁注,我认为这不适合您描述的用例。该选项确实存在,因此选择适合您的选项。

SASS将查看所有
.scss
文件(和部分文件),并将它们一起编译为输出
.css
文件。因此,您不能使用JavaScript直接操作SASS变量,因为在运行JavaScript时这些变量已经不存在了

为了解决这个问题并实现您想要的,您将需要由SASS生成多个样式表,然后您可以使用JavaScript替换这些样式表

它可能看起来像这样:

绿色.scss

$primary-color: #6ddba4;
$secondary-color: #6ddba4;
$tertiary-color: #6ddba4;

@import 'layout/layout.scss';
.home_icon {

    border: 1px solid $primary-color !important;
    color: $primary-color !important;

    &:hover {

        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;

    }

}
$primary-color: green;
$secondary-color: blue;
$tertiary-color: red;

@import "./layout";
$primary-color: red;
$secondary-color: blue;
$tertiary-color: orange;

@import "./layout";
.home_icon {
    border: 1px solid $primary-color !important;
    color: $primary-color !important;
    &:hover {
        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;
    }
}

// Add as much as you want here and reference your variables
red.scss

$primary-color: #6ddba4;
$secondary-color: #6ddba4;
$tertiary-color: #6ddba4;

@import 'layout/layout.scss';
.home_icon {

    border: 1px solid $primary-color !important;
    color: $primary-color !important;

    &:hover {

        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;

    }

}
$primary-color: green;
$secondary-color: blue;
$tertiary-color: red;

@import "./layout";
$primary-color: red;
$secondary-color: blue;
$tertiary-color: orange;

@import "./layout";
.home_icon {
    border: 1px solid $primary-color !important;
    color: $primary-color !important;
    &:hover {
        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;
    }
}

// Add as much as you want here and reference your variables
\u layout.scss

$primary-color: #6ddba4;
$secondary-color: #6ddba4;
$tertiary-color: #6ddba4;

@import 'layout/layout.scss';
.home_icon {

    border: 1px solid $primary-color !important;
    color: $primary-color !important;

    &:hover {

        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;

    }

}
$primary-color: green;
$secondary-color: blue;
$tertiary-color: red;

@import "./layout";
$primary-color: red;
$secondary-color: blue;
$tertiary-color: orange;

@import "./layout";
.home_icon {
    border: 1px solid $primary-color !important;
    color: $primary-color !important;
    &:hover {
        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;
    }
}

// Add as much as you want here and reference your variables
这将生成一个
green.css
文件和一个
red.css
文件,然后可以根据需要在HTML中进行交换

我还将上面的所有内容粘贴到了一个示例中,这样您就可以更好地对其进行可视化并查看输出CSS


不过,作为旁注,我认为这不适合您描述的用例。该选项确实存在,因此选择适合您的选项。

您需要将“绿色”导入layout.scss文件 green.scss

$primary-color: #6ddba4;
$secondary-color: #6ddba4;
$tertiary-color: #6ddba4;
layout.scss

@import 'green'
    .home_icon {
    border: 1px solid $primary-color !important;
    color: $primary-color !important;
     &:hover {
        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;
        }
    }
通过执行此操作,您可以将green.scss中的所有变量访问到layout.scss文件。

您需要将“green”导入layout.scss文件。 green.scss

$primary-color: #6ddba4;
$secondary-color: #6ddba4;
$tertiary-color: #6ddba4;
layout.scss

@import 'green'
    .home_icon {
    border: 1px solid $primary-color !important;
    color: $primary-color !important;
     &:hover {
        background-color: $secondary-color !important;
        color: #fff !important;
        border-color: #fff !important;
        }
    }

通过这样做,您可以将green.scss中的所有变量访问到layout.scss文件。

为什么不在
layout.scss
中导入变量?为什么不在
layout.scss
中导入变量?谢谢您的回答。这样,我必须将基本代码复制到我创建的每个模板中,因为green.scss将生成一个css文件,我将通过JQuery包含该文件。我的意思是,基本代码是layout.scss文件以及所有需要的类,我可以将这些类和颜色文件(green.scss,blue.scss)进行“合并”。如果换一种方式,我必须在每个颜色文件中复制所有基本代码(类),因此如果我想更改某些内容,我必须在比layout.scs多得多的文件中进行更改。我希望这是有道理的。好吧,我想我明白你现在想做得更好。我更新了我的答案,提供了更多的细节。没问题,很高兴我们找到了答案!谢谢你的回答。这样,我必须将基本代码复制到我创建的每个模板中,因为green.scss将生成一个css文件,我将通过JQuery包含该文件。我的意思是,基本代码是layout.scss文件以及所有需要的类,我可以将这些类和颜色文件(green.scss,blue.scss)进行“合并”。如果换一种方式,我必须在每个颜色文件中复制所有基本代码(类),因此如果我想更改某些内容,我必须在比layout.scs多得多的文件中进行更改。我希望这是有道理的。好吧,我想我明白你现在想做得更好。我更新了我的答案,提供了更多的细节。没问题,很高兴我们找到了答案!也谢谢你的回答。看来你的答案差不多。也谢谢你的回答。看来你的答案差不多。