如何在SASS中获取CSS属性的值?

时间:2012-02-22 12:14:28

标签: sass

我希望存储属性的当前值以供以后使用。它已经为jQuery解决了。

问题是我使用@mixin在多个地方(Justified Block List)应用CSS黑客,我想恢复font-size属性在.block-list *中(当前子元素中的所有文本刚刚折叠)。

不满意的解决方法:

  • 将全局默认字体大小保存在单独的文件中,并将其传递给@mixin上的@import。当然,在一般情况下,这与使用mixin的对象的字体大小不同。
  • 每次更改时保存字体大小,然后传递。这会纠缠所涉及的文件,因为它在几个不相关的文件中@include排版样式表并不是很优雅。
  • 使用更多jQuery。

可能令人满意的解决方法:

  • 在第一个更改它的祖先上使用更强的规则覆盖字体大小。这可能很难确定。

2 个答案:

答案 0 :(得分:3)

如果你有一个使用字体大小做“hacky”的mixin,那么你可能需要重新设置你注意到的字体大小。我建议如下:

  1. 创建一个Sass partial以记录您的项目配置变量。我建议_config.sass
  2. _config.sass中定义基本字体大小:

    $base-font-size: 16px
    
  3. 在主sass文件的顶部添加@import _config.sass

  4. 更新mixin以将font-size重置为$ base-font-size:

    @mixin foo
      nav
        font-size: 0 // this is the hacky part
        > li
          font-size: $base-font-size // reset font-size
    
  5. 注意:如果您使用的是SCSS语法,则需要在此处更新示例。

答案 1 :(得分:3)

在样式实际应用于文档之前,没有办法告诉属性的计算值(这是jQuery检查的内容)。在样式表语言中,除了初始值或您指定的值之外,没有“当前”值。

每当你更改它时保存字体大小,并传递似乎是最好的,并且@BeauSmith已经给出了a good example。此变体允许您将大小或回退传递给已定义的全局:

=block-list($font-size: $base-font-size)
  font-size: 0
  > li
    font-size: $font-size