使用sass分离内联媒体查询的文件?

时间:2014-10-06 02:11:03

标签: css sass

我想知道是否可以使用SASS为每个媒体查询(移动设备,平板电脑,桌面等)分别创建一个文件,然后使用内联媒体查询将sass编译为该类的内联媒体查询那个具体的文件?

例如:

说我有一个sass partial _article.scss。

.test-class {
      color: #000000;
      background: red;
      width: 980px;

  @media only screen and (max-width : 300px) {
      width: 100px;
      height: 100px;
    }
}

此部分导入base.scss。

@import "partials/article";

现在我想要的是,而不是在base.css文件中编译每个媒体查询,我希望每个与移动设备,平板电脑等相关的特定媒体查询被编译到自己的文件(mobile.css,tablet,css)等)。

换句话说,我想要内联媒体查询的好处,同时仍然为每个设备提供非常模块化的文件结构。当我提供文件时,我只需要服务器2个小文件(base.css和mobile.css)。

这可能吗?我目前只是创建一个mobile.scss文件,然后手动覆盖我在工作中的项目中的样式,这将导致以后出现问题。

有更好的选择吗?

谢谢

1 个答案:

答案 0 :(得分:-4)

您可以使用jQuery执行此操作:

function adjustStyle(width) {
    width = parseInt(width);
    if (width < 777) {
        $(".body").attr("href", "css/small.css");
    } else if ((width >= 778) && (width < 980)) {
        $(".body").attr("href", "css/medium.css");
    } else {
       $(".body").attr("href", "css/big.css"); 
    }
}

$(function() {
    adjustStyle($(this).width());
    $(window).resize(function() {
        adjustStyle($(this).width());
    });
});

更好的方法是包含一个设备列表,然后包含您的CSS表格,这样您就不会有双重下载,这意味着只有在设备匹配时才会下载。为此,您可以使用Detect Mobile Browsers处的任何语言,然后根据自己的喜好进行调整。