【发布时间】:2013-07-27 13:35:36
【问题描述】:
供参考: SCSS .extend()
关于这个问题的类似帖子: Using extend for clearfix
假设我要创建一些可以在整个项目中扩展和重用的类:
例如,一个类可以是:
//common boilerplate for most of my parent divs
.scaffold
{
position: relative;
-moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;
height: 100%;
width: 100%;
margin: 0;
padding: 0;
}
//or a typical clearfix
.group:after {
content: "";
display: table;
clear: both;
}
假设我有十几个具有不同用途和/或属性差异的类。在什么时候扩展课程对性能有害而不是有益?例如 - 如果这个类有 50 个不同类的逗号
SCSS 类之一的编写示例
.site-header
{
@extend .group;
@extend .scaffold;
background: papayawhip;
border-bottom: 1px #ccc solid;
}
编译后的 clearfix 示例可能是 CSS
.group:after, .site-header, .route-nav, .main-article, .article-header, .side-bar, .site-footer
//this could go on for a while
{
content: "";
display: table;
clear: both;
}
示例 HTML
<!DOCTYPE html>
<html lang="en">
<body>
<header class="site-header">
<nav class="route-nav">
<nav>
</header>
<article class="main-article">
<header class="article-header"></header>
</article>
<aside class="side-bar">
</aside>
<footer class="site-footer">
</footer>
</body>
</html>
我觉得这可能是编写 css 的 DRY-est 方法之一。我觉得这种方法在只写了几部分页面后会变得非常有效和成功。此外,这些类中的大多数可以通过许多项目进行改进和使用。我真的很想尝试一下,但我担心从长远来看它可能会导致一些性能问题,尤其是当类开始使用伪类时,例如 :after :before。
与仅添加类或编写 mixin 相比,性能会受到影响吗?有没有人有任何统计数据可以备份最佳路线?
【问题讨论】:
-
除非您有真正的理由担心性能,否则不要担心性能,是吗?任何地方都有那么多逗号是代码的味道。
-
以 clearfix 为例:我有两个选项将它写在 html 中,这对可重用性很好,但在 html 方面很难看。或使用将多次重写代码的混合。 “代码气味”是什么意思?我只是好奇我会注意到这条路线的缓慢吗?
-
为了便于阅读,我更喜欢
clearfix,以了解 html 元素上有一个 clearfix。如果您在一个绝对可行的团队中工作,或者如果另一个开发人员曾经离开过这个项目。 -
@MatthewHarwood,那就去吧。我认为它没有性能问题。
-
在我看来你有你的 A 和你的 B,所以去做一个基准测试。