Css 为什么SASS编译不需要的/未使用的代码

Css 为什么SASS编译不需要的/未使用的代码,css,sass,compass-sass,scss-lint,Css,Sass,Compass Sass,Scss Lint,我正在学习SASS并尝试一些例子。我在理解选择器序列以及为什么SASS合并它们时遇到一些问题 在真实场景中,输出可能有不需要的css。例如:- a{ color: #0086B3; &:hover{ text-decoration: none; } } #footer a{ color: #a61717; } .head-links{ @extend a; font-weight: bold; } 此代码块符合以下要求:- a, .

我正在学习SASS并尝试一些例子。我在理解选择器序列以及为什么SASS合并它们时遇到一些问题

在真实场景中,输出可能有不需要的css。例如:-

a{
    color: #0086B3;
    &:hover{
      text-decoration: none;
   }
 }

#footer a{
  color: #a61717;
}

.head-links{
  @extend a;
  font-weight: bold;
} 
此代码块符合以下要求:-

a, .head-links {
  color: #0086B3; 
}
a:hover, .head-links:hover {
   text-decoration: none; 
}

#footer a, #footer .head-links {
  color: #a61717; 
}

.head-links {
  font-weight: bold; 
}
问题是

#footer .head-links
可能永远不会被使用。那么,如果不需要合并选择器序列,那么合并选择器序列的意义是什么呢

如何避免这种情况。如何使其仅扩展:-

a{
   color: #0086B3;
   &:hover{
    text-decoration: none;
   }
 }

这是否需要我使用类来代替…

,因为您正在扩展元素
a

@extend a;
如果删除它,SASS将不会“合并”它们

您有
footer a
,在
中扩展
a
时,头部链接将添加
#footer。头部链接
到现有规则
#footer a

这意味着它将扩展到CSS中的任何
a
,而不仅仅是选择器
a

更新

如何避免这种情况。如何使其仅扩展:-

a{
   color: #0086B3;
   &:hover{
    text-decoration: none;
   }
 }
a{
颜色:#0086B3;
&:悬停{
文本装饰:无;
} 
}

这是否需要我使用一个类来代替

是的,您需要为此使用类或ID

大概是这样的:

.uniqueclass{
   color: #0086B3;
   &:hover{
    text-decoration: none;
   }
 }

这里是一个

,因为您在这里扩展元素
a

@extend a;
如果删除它,SASS将不会“合并”它们

您有
footer a
,在
中扩展
a
时,头部链接将添加
#footer。头部链接
到现有规则
#footer a

这意味着它将扩展到CSS中的任何
a
,而不仅仅是选择器
a

更新

如何避免这种情况。如何使其仅扩展:-

a{
   color: #0086B3;
   &:hover{
    text-decoration: none;
   }
 }
a{
颜色:#0086B3;
&:悬停{
文本装饰:无;
} 
}

这是否需要我使用一个类来代替

是的,您需要为此使用类或ID

大概是这样的:

.uniqueclass{
   color: #0086B3;
   &:hover{
    text-decoration: none;
   }
 }

这是一个

是的……但我的观点是——只有这段代码应该扩展:-a{color:#0086B3;&:hover{text decoration:none;}是的……但我的观点是——只有这段代码应该扩展:-a{color:#0086B3;&:hover{text decoration:none;}