如何在手写笔中部分导入

时间:2014-09-10 11:05:34

标签: inheritance import extend partial stylus

如何在手写笔中实现部分导入(扩展,包含,继承)? 例如,我有两个文件:

  • foo.styl body {color:orange} a {color: blue}

  • bar.styl

在文件bar.styl中,我希望来自body {color:orange}的{​​{1}},但不希望foo.styl
如何实施?

1 个答案:

答案 0 :(得分:0)

在Stylus中还没有这样的东西。有可能使用这个技巧:

$foo
  @import 'test2'

body
  @extends $foo body

但是Stylus有一个错误:https://github.com/LearnBoost/stylus/issues/1687 - 阻止它正确呈现。这个错误在Stylus 0.49.0中得到修复,所以如果你使用这个版本或更高版本,一切都应该没问题。

由于问题仅在您尝试使用@extends的选择器与嵌套选择器匹配时发生,您可能会在某种程度上欺骗Stylus认为选择器不相同。最简单易行的方法就是这样写:

$foo
  @import 'test2'

* > body
  @extends $foo body

这会使Stylus不会将这些选择器视为相等并且会正确输出* > body。虽然明星选择器通常是有害的,但在这种情况下它不是:因为它位于左侧并且有一个儿童组合器,当选择器匹配发生时它不会导致性能问题,并且作为星形选择器不会出现问题。对它有任何特异性,它不会干扰给定规则的特异性。

但是,如果您可以等一下,我们可以尝试在Stylus中修复此错误,因此您可以在下一个版本之一中使用此答案开头的修复代码。