Angular 角度2 cli SCSS/CSS顺序

Angular 角度2 cli SCSS/CSS顺序,angular,Angular,我正试图弄清楚Angular 2在编译完后对Css使用了什么顺序 我试图解决的是,它是否从各个组件中获取所有的SCSS文件,然后将它们添加到main styles.SCSS文件之后?这似乎是显而易见的事情,但它是否会反过来,将复合样式放在第一位,然后再放在主要样式上 我知道如果我在angular-cli.json文件的styles数组中指定文件,angular将按该顺序处理这些文件,但显然没有指定组件样式 抱歉,如果这听起来有点奇怪,但我无法解决它,似乎找不到任何关于它的任何信息 您可能需要了解

我正试图弄清楚Angular 2在编译完后对Css使用了什么顺序

我试图解决的是,它是否从各个组件中获取所有的SCSS文件,然后将它们添加到main styles.SCSS文件之后?这似乎是显而易见的事情,但它是否会反过来,将复合样式放在第一位,然后再放在主要样式上

我知道如果我在angular-cli.json文件的styles数组中指定文件,angular将按该顺序处理这些文件,但显然没有指定组件样式


抱歉,如果这听起来有点奇怪,但我无法解决它,似乎找不到任何关于它的任何信息

您可能需要了解ViewEncapsulation的工作原理以及其他一些事情。这可能有助于:


一般来说,我们不必确保给定的样式顺序。组件样式(默认情况下)将独立于其他组件中的其他样式,并按照样式的处理顺序工作

Sass文件的处理顺序是不保证的在CLI中,有一个顺序是CLI插件(基于Web包)处理文件的顺序,但随着CLI的发展,该顺序可能会随着时间的推移而改变

角度样式的主要目标之一是提供样式封装,这意味着与组件关联的SASS文件上的样式仅适用于该样式

为了理解这是如何工作的,以及为什么通常我们不需要担心样式顺序,让我们以组件SASS文件中的这种样式为例:

.active {
    border-radius:4px;
}
这将在运行时转换为以下内容:

.active[_concontent-c1] {
    border-radius:4px;
}
尖括号内的是一个唯一属性标识符,它增加了样式的特殊性,并确保其仅适用于该特定组件模板内的元素

此机制的主要好处之一是组件样式的处理顺序并不重要,因为唯一标识符将确保它们不会相互干扰

注意:如果需要,可以不将唯一ID应用于样式


看看这篇文章,看看这个机制在起作用的更多细节。

谢谢Fahah,我读过那篇文章,但它并没有真正说明事物的排列顺序。我只是想在一个bog标准Angular cli项目中计算,如果我在main style.scss文件中有一些样式,在component.scss文件中有一些组件样式,那么webpack在创建包时会将它们放在什么顺序中