使用Sass变量和CSS3媒体查询

前端之家收集整理的这篇文章主要介绍了使用Sass变量和CSS3媒体查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图结合使用Sass变量与@media查询如下:
$base_width:1160px;

@media screen and (max-width: 1170px) {$base_width: 960px;}
@media screen and (min-width: 1171px) {$base_width: 1160px;}

$ base_width然后在样式表宽度百分比测量中的各个点定义,以产生流体布局。

当我这样做,变量似乎被正确识别,但媒体查询的条件不是。例如,上述代码产生1160像素的布局,而不考虑屏幕宽度。如果我触发器@media语句像这样:

@media screen and (min-width: 1171px) {$base_width: 1160px;}
@media screen and (max-width: 1170px) {$base_width: 960px;}

它产生一个960px的布局,无论屏幕宽度如何。还要注意,如果我删除$ base_width:1160px的第一行;它返回一个未定义变量的错误。任何想法我错过了什么?

解决方法

这根本不可能。因为触发器@media屏幕和(max-width:1170px)发生在客户端。

只有在SASS抓取包含$ base_width变量的样式表中的所有规则和属性并相应地复制/更改它们,才能实现预期结果。

因为它不会自动工作,你可以用手做这样:

@media screen and (max-width: 1170px)
      $base_width: 960px // you need to indent it to (re)set it just within this media-query
      // now you copy all the css rules/properties that contain or are relative to $base_width e.g.
      #wrapper
          width: $base_width
          ...

@media screen and (min-width: 1171px)
    $base_width: 1160px
      #wrapper
          width: $base_width
          ...

这不是真的DRY,但最好的你可以做。

如果每次你也可以准备一个包含所有变化的值的修改,那么你不需要重复它。此外,您可以尝试将mixin与特定更改组合。喜欢:

@media screen and (min-width: 1171px)
    +base_width_changes(1160px)
    #width-1171-specific-element // additional specific changes,that aren't in the mixin
        display: block

Mixin看起来像这样

=base_width_changes($base_width)
    #wrapper
        width: $base_width

猜你在找的CSS相关文章