SMACSS\BEM - 如何正确处理图标样式?
SMACSS\BEM - how to correctly handle icon style?
我有两个嵌套模块:
<div class="header">
.....
<i class="topIcon"></i>
......
</div>
我有两个单独的文件(我想将它们分开,因为它们是可重复使用的部分,可以在整个应用程序中单独使用)作为 SMACSS 术语中的模块:
Header:
.header {
/* header styles */
}
图标:
.topIcon {
/* icon styles */
}
现在我想在 header
处于 :hover
状态时对 topIcon
应用一些样式。
我可以将 .header:hover .topIcon
放入我的图标模块文件并应用样式,但是从我的 POV 来看它违反了 SMACSS 规则。
你有什么更好的建议吗?
我过去常常使用 Sass' & selector:
.topIcon {
/* icon styles */
.header & {
/* modified styles when it's in header */
}
.header:hover & {
/* modified styles when it's in header thats hovered */
}
}
结果会是
.topIcon {
/* icon styles */
}
.header .topIcon {
/* modified styles when it's in header */
}
.header:hover .topIcon {
/* modified styles when it's in header thats hovered */
}
这样,我将图标相关的样式保留在图标文件中,但避免在根级别 "foreign" 类。
这种方式的一个弱点可能是,您可能还有另一个 .header:hover 规则在头文件中,这可能会让其他人感到困惑,不知道在哪里放置什么。
我有两个嵌套模块:
<div class="header">
.....
<i class="topIcon"></i>
......
</div>
我有两个单独的文件(我想将它们分开,因为它们是可重复使用的部分,可以在整个应用程序中单独使用)作为 SMACSS 术语中的模块:
Header:
.header {
/* header styles */
}
图标:
.topIcon {
/* icon styles */
}
现在我想在 header
处于 :hover
状态时对 topIcon
应用一些样式。
我可以将 .header:hover .topIcon
放入我的图标模块文件并应用样式,但是从我的 POV 来看它违反了 SMACSS 规则。
你有什么更好的建议吗?
我过去常常使用 Sass' & selector:
.topIcon {
/* icon styles */
.header & {
/* modified styles when it's in header */
}
.header:hover & {
/* modified styles when it's in header thats hovered */
}
}
结果会是
.topIcon {
/* icon styles */
}
.header .topIcon {
/* modified styles when it's in header */
}
.header:hover .topIcon {
/* modified styles when it's in header thats hovered */
}
这样,我将图标相关的样式保留在图标文件中,但避免在根级别 "foreign" 类。
这种方式的一个弱点可能是,您可能还有另一个 .header:hover 规则在头文件中,这可能会让其他人感到困惑,不知道在哪里放置什么。