2011-08-08 98 views

回答

12

它可以使用string interpolation

@myvar: ((480/1366)*100); 
width: ~"@{myvar}%"; 

這將輸出

width: 35.13909224011713%; 

此外,如果你希望它是圓的,你可以使用round()

+0

無論如何,我可以做到沒有var?我試過 寬度:「@ {(237/768)* 100}%」; 但它似乎沒有工作... – Joel

+0

嘿,這又是我!當你這樣做時,它變成了一個字符串。我需要一個數字......即最終的結果是寬度:「35.13909224011713%」;所以我恐怕這是行不通的。 – Joel

+0

原來你也需要逃離字符串!所以這裏是〜號的正確解決方案: @myvar:((480/1366)* 100); width:〜「@ {myvar}%」; – Joel

7

即使這個問題很老,我想添加一些關於添加的例子。減少將你的單位設置爲正在操作的任何東西。

10px + 20px 

將輸出30像素

(20/200) * 100% 

將輸出10%

所以你不需要來串聯單元的測量單位。

我發現當你不知道單位值可能是多少時,加0會有幫助。

.mixin(@x, @y){ 
    @result: (@x/@y) * 100; 
} 

.my_class { 
    .mixin(20, 100); 
    width: @result + 0%; // you can use any unit here 
} 

上述類的寬度爲20%。如果我們添加了px,它將是20px。

1

出於某種原因,最簡單和最明顯的方法是在這裏失蹤(它實際上是Richard Testani的答案,但是在那裏它會阻礙進一步的代碼導致錯誤的方向)。所以...... 答案原文:

width: ((480/1366)*100)+'%'; 

很簡單,只要:

width: (480/1366*100%); 
說起 percentage

它也做了這個伎倆,但我個人從來沒有使用它的冗長和不可讀性。在快速掃描percentage(480/1366)就像peekabooze(480/1366),所以你必須停下來盯着它才能得到線索。相反%480/1366*100%(或480/1366 * 100%)中的顯式外觀使其更易於引人注目。

+0

有點偏離主題,但是有計劃將精度值作爲編譯器選項公開嗎? – Harry

+1

@Harry,nope(沒有用例,參見[#1909](https://github.com/less/less.js/pull/1909))。 –