我剛剛進入LessCSS,我遇到了我覺得是主要限制,我想知道是否有辦法做到這一點?我想說我在某處閱讀Sass允許用戶定義的功能,但LessCSS可以做同樣的事情嗎?用LessCSS自定義函數?
我想要做什麼:
@fs: 16;
// either return the value
.s(@t,@s,@u) {
// return @t/@s*@u;
}
#elem {
margin-top: .s(30,@fs,1em);
width: .s(900,@fs,1em);
.child {
width: .s(100,900,100%);
}
}
// or have a property argument
.s(@t,@s,@u,@p) {
@{p}: @t/@s*@u;
}
#elem {
.s(30,@fs,1em,margin-top);
.s(900,@fs,1em,width);
.child {
.s(100,900,100%,width);
}
}
的唯一途徑我可以計算出來,但它是非常有限的,因爲我已經有多個混入:
.s(@t,@s,@u,@p) when (@p = margin-top) { margin-top: @t/@s*@u; }
// margin[-top|-right|-bottom|-left]
// padding[-top|-right|-bottom|-left]
.s(@t,@s,@u,@p) when (@p = width) { width: @t/@s*@u; }
.s(@t,@s,@u,@p) when (@p = height) { height: @t/@s*@u; }
我知道我總是可以修改less.js文件來添加一個間距函數,如內置的round()
或ceil()
函數。但是,這會殺死使用LessPHP,Crunch,SimpLess編譯生產無文件文件的選項。
謝謝你的迴應。我決定只是製作'dimensions.less'並導入它,而不必依賴lessphp。該文件包含'.width()''.padding()'等 – 2012-03-31 20:46:28