Как передать блок кода в функцию или миксин в Stylus

Я перехожу с Sass на Stylus, и у меня есть много миксинов, в которых я передаю блок кода, доступный внутри миксина как @content.

Например...

@mixin respond-min($width) {
    // If we're outputting for a fixed media query set...
    @if $fix-mqs {
        // ...and if we should apply these rules...
        @if $fix-mqs >= $width {
            // ...output the content the user gave us.
            @content;
        }
    }
    @else {
        // Otherwise, output it using a regular media query
        @media all and (min-width: $width) {
            @content;
        }
    }
}

@include respond-min($mq-group2) {
    & {
        border: 1px solid green;
    }
}

Я хочу преобразовать приведенный выше код в Stylus, но моя основная проблема заключается в том, как я передаю блок кода в миксин, поскольку Stylus, похоже, не имеет этой функции.

Есть ли альтернативное решение?

Любая помощь приветствуется.


person Integralist    schedule 11.07.2013    source источник
comment
в настоящее время вам нужно создать миксин и передать его в качестве аргумента   -  person Ven    schedule 12.07.2013


Ответы (2)


Это стало возможным с последней версией Stylus — 0.41.0, приведенный выше код можно было бы написать в Stylus следующим образом:

respond-min($width)
  // If we're outputting for a fixed media query set...
  if $fix-mqs is defined
    // ...and if we should apply these rules...
    if $fix-mqs >= $width
      // ...output the content the user gave us.
      {block}
  else
    // Otherwise, output it using a regular media query
    media = 'all and (min-width: %s)' % $width
    @media media
      {block}

+respond-min($mq-group2)
  border: 1px solid green
person kizu    schedule 01.12.2013
comment
Превосходно! Большое спасибо. В ближайшем будущем я планирую перевести BBC News с Sass на Stylus :-) - person Integralist; 13.12.2013

Стоит отметить, что в настоящее время существуют открытые проблемы, связанные с передачей нескольких аргументов в запросы @media. Также миксины нельзя использовать в качестве селекторов.

person fooling    schedule 19.07.2013