LESS mixin recursion error to convert pixels to rems

后端 未结 1 650
一个人的身影
一个人的身影 2020-12-21 18:25

I am trying to make a mixin to propery convert pixels to relative ems. I would like it to be flexible enough to allow any property to be used with any number of pixel values

相关标签:
1条回答
  • 2020-12-21 18:55

    See Merge feature. The only trick is that the merge statement will concatenate values into the same property rule, thus you'll have to isolate px and rem rules via some hack. For example like this:

    usage {
        .pixels-to-rems(padding, 10 0 20 10);
        .pixels-to-rems(font-size, 50);
    }
    
    // impl.:
    
    @base-font-size: 10px;
    
    .pixels-to-rems(@p, @vs) {
        .for(@vs); .-each(@v) {
            @{p}+_:     1px  * @v;
            @{p}@{-}+_: 1rem * @v / @base-font-size;
        }
        @-: ~" ";
    }
    
    // .for-each impl. (stripped from the snipped linked in the question)
    
    .for(@array)                 {.for-impl_(length(@array))}
    .for-impl_(@i) when (@i > 1) {.for-impl_((@i - 1))}
    .for-impl_(@i) when (@i > 0) {.-each(extract(@array, @i))}
    

    Demo.

    0 讨论(0)
提交回复
热议问题