Css 触针混入指混入元件';谁的父母?

Css 触针混入指混入元件';谁的父母?,css,stylus,Css,Stylus,我一直在摆弄手写笔,现在有一点,并想完成一些与混音,感觉它应该是可能的,即使我不能弄清楚它。具体地说,我想编写一个mixin,为应用mixin的元素的父元素设置样式。例如,我永远记不起使用伪元素垂直居中的正确语法,所以我想为它准备一个方便的dandy mixin;但理想情况下,我希望将其应用于要居中的元素,并且psedoo元素属于该元素的父元素 毫不奇怪,这不起作用: vertical-middle() display inline-block vertical-align mi

我一直在摆弄手写笔,现在有一点,并想完成一些与混音,感觉它应该是可能的,即使我不能弄清楚它。具体地说,我想编写一个mixin,为应用mixin的元素的父元素设置样式。例如,我永远记不起使用伪元素垂直居中的正确语法,所以我想为它准备一个方便的dandy mixin;但理想情况下,我希望将其应用于要居中的元素,并且psedoo元素属于该元素的父元素

毫不奇怪,这不起作用:

vertical-middle()
    display inline-block
    vertical-align middle

    &
        font-size 0

        &::before
            content ''
            display inline-block
            height 100%
            vertical-align middle


.nav-wrapper
    .nav
        vertical-middle()
…事实上可能有点混淆了手写笔,因为它生成的CSS有两个
.nav wrapper.nav
块:

.nav-wrapper .nav {
  display: inline-block;
  vertical-align: middle;
}
.nav-wrapper .nav {
  font-size: 0;
}
.nav-wrapper .nav::before {
  content: '';
  display: inline-block;
  height: 100%;
  vertical-align: middle;
}

我的猜测是,使用块混入可以减少我的悲伤,但我有一种感觉,那就是我最终会将
.nav
.nav wrapper
的常规样式传递给它,而且这种方式似乎会带来痛苦。

使用块混入是您的最佳方式:

vertical-middle($sel)
  {$sel}
    display inline-block
    vertical-align middle
    {block}

  font-size 0

  &::before
    content ''
    display inline-block
    height 100%
    vertical-align middle


.nav-wrapper
  +vertical-middle('.nav')
    foo: bar

当Stylus获得对更强大的父级引用的支持时,您就可以按照自己的方式进行操作了-

说,这非常聪明!非常感谢你的想法;我期待着用它来烘干我的样式表。