将css媒体查询分组在一起是否有优势?

时间:2012-07-24 07:35:17

标签: css sass media-queries

(这可能已经回答了 - 虽然找不到答案)

传统的@media查询覆盖倾向于将同一括号组下的一个大小/介质的所有覆盖分组。

e.g。

.profile-pic {
    width:600px;
}
.biography {
    font-size: 2em;
}

@media screen and (max-width: 320px) {
    .profile-pic {
        width: 100px;
        float: none;
    }
    .biography {
        font-size: 1.5em;
    }
}

在Sass中,有一种非常好的方法可以在嵌套声明中编写@media查询覆盖,如下所示:

.profile-pic {
width:600px;
  @media screen and (max-width: 320px) {
    width: 100px;
    float: none;
  }
}

.biography {
    font-size: 2em;
  @media screen and (max-width: 320px) {
    font-size: 1.5em;
  }
}

现在,在编译时,sass不会将@media查询块组合在一起,因此输出最终会是这样的:

.profile-pic {
    width:600px;
}
@media screen and (max-width: 320px) {
  .profile-pic {
    width: 100px;
    float: none;
  }
}

.biography {
    font-size: 2em;
}
@media screen and (max-width: 320px) {
  .biography {
    font-size: 1.5em;
  }
}

我已经将这个技术用于最近的项目,当你将这个原则应用到一个更大的项目时,你最终会在你的css中传播多个@media查询部分(到目前为止我已经有大约20个)。

我非常喜欢sass技术,因为它可以更容易地跟随覆盖的流程(并且还可以更容易地移动物体)。

但是,我想知道在通过CSS获得多个@media部分是否有任何不利之处,特别是性能明智?

我已经尝试过chrome css profiler,但我看不到@media查询的任何特定内容。

More info on @media in sass on this page

2 个答案:

答案 0 :(得分:16)

派对有点晚了,但根据下面的测试,性能影响似乎微乎其微。该测试分别显示了具有2000个单独和组合媒体查询的示例页面的呈现时间。

http://aaronjensen.github.com/media_query_test/

主要的好处似乎是文件大小比其他任何东西都要大 - 如果你正在压缩你的CSS用于制作,那么无论如何都会大大减少。

但最终,正如下面的链接帖子所说:

  

“如果您的CSS中有2000多个媒体查询,我认为您可能需要重新考虑您的UI开发策略,而不是使用gem来重新处理您的CSS。”

博客文章详细说明了这个问题: http://sasscast.tumblr.com/post/38673939456/sass-and-media-queries

答案 1 :(得分:1)

我认为只需运行一次媒体查询检查(然后加载其中的所有样式)就不会比检查每个选择器更累,但我没有确凿的证据。如果你得到Canary release of Chrome,那里就有媒体查询工具。

当您使用SASS时,这篇文章可能会引起一些兴趣 - http://css-tricks.com/media-queries-sass-3-2-and-codekit/