玉石混合中的动态元素

时间:2014-12-20 13:23:52

标签: variables dynamic element pug

我想在Jade中创建一个按钮mixin。但是我不知道哪些html元素我将应用那些mixin,例如a,按钮或输入。

我的问题:是否可以从mixin中选择元素?例如这样称呼它 a +按钮或输入+按钮

或使用元素参数插入带有mixin的元素

mixin button(element, style, size, expand, fill, round, simple)
    - var style = (typeof href === 'undefined') ? '' : style
    - var fill = (typeof fill === 'undefined') ? '' : 'btn-fill'
    - var expand = (typeof expand === 'undefined') ? '' : 'btn-block'
    - var round = (typeof round === 'undefined') ? '' : 'btn-round'
    - var simple = (typeof simple === 'undefined') ? '' : 'btn-simple'
    case size
        when "large"
            - size = "btn-lg"
        when "small"
            - size = "btn-sm"
        when "mini"
            - size = "btn-xs"
    element(href=href, role='button',class=["btn", "btn-" + style, size, fill, expand, round, simple])&attributes(attributes)
        block

问候

2 个答案:

答案 0 :(得分:5)

自己找到:

#{element} solves the problem

答案 1 :(得分:0)

我正在做一个SVG mixin,并尝试通过包括像:

mixin svg(icon)
 case icon
    when "address"
      include ../../assets/final/svg/addaddress.svg
     when "billing"
       include ../../assets/final/svg/billing.svg

它没有成功。

然后尝试了这个:

mixin svgaddress
 include ../../assets/final/svg/date.svg 

mixin svgbilling
 include ../../assets/final/svg/delete.svg 

mixin svg(icon)
 case icon
    when "address"
       +svgaddress
     when "billing"
       +svgbilling

我知道我实际上可以通过mixins直接添加图标,但出于语法目的,我更喜欢:

+svg('address')

我制作了一个非常类似于你的,但更多的是一个简单的按钮,还有svg:

 mixin abutton(desc,href,icon,classe)
   a(href="#{href}",class="#{classe}") 
     case icon
       when "address"
         +svgaddress

      span #{desc}

输入

+abutton('myaccount','account.html','address','button outline grey')