【发布时间】:2014-03-21 02:52:33
【问题描述】:
例如,我有一个导航模块。
方法 1 将两个类添加到 HTML 中以获得所需的效果。一类用于基础,另一类用于修改。
HTML:
<ul class="nav nav-1">
<li><a href="" class="" title="">Home</a></li>
<li><a href="" class="" title="">Promotions</a></li>
<li><a href="" class="" title="">Products</a></li>
<li><a href="" class="" title="">About Us</a></li>
</ul>
SCSS:
//BASE
.nav {
font-size: 0;
li {
display: inline-block;
}
a {
font-size: 16px;
display: block;
}
}
//MODIFICATION
.nav-1 {
a {
padding: 10px;
background: #EEE;
}
}
方法 2 只是将一个类添加到 HTML 中以获得所需的效果。 base 被制成占位符并使用@extend 添加。
HTML:
<ul class="nav-1">
<li><a href="" class="" title="">Home</a></li>
<li><a href="" class="" title="">Promotions</a></li>
<li><a href="" class="" title="">Products</a></li>
<li><a href="" class="" title="">About Us</a></li>
</ul>
SCSS:
//BASE
%nav {
font-size: 0;
li {
display: inline-block;
}
a {
font-size: 16px;
display: block;
}
}
//MODIFICATION
.nav-1 {
@extend %nav;
a {
padding: 10px;
background: #EEE;
}
}
问题:
虽然我发现使用扩展技术消除了向 HTML 添加多个类的需要,但我觉得它会使 CSS 膨胀。如果我有.nav-2、.nav-3、ETC,生成的CSS会是这样的:
.nav-1, .nav-2, .nav-3 {
font-size: 0;
}
.nav-1 li, .nav-2 li, .nav-3 li {
display: inline-block;
}
.nav-1 a, .nav-2 a, .nav-3 a {
font-size: 16px;
display: block;
}
这是一个好习惯吗?还是我应该只保留方法1?
【问题讨论】:
-
不确定如何修改问题以使其适合 SO。我认为,关于正确的 CSS 架构,这是一个合理的问题,我正在寻找的答案应该更具体(基于 CSS 性能和最佳实践)而不是基于意见。我认为一个应该比另一个更正确。
标签: css architecture sass