2013-07-02 162 views
21

使用LESS,如何在變量末尾用「px」減去值。我有以下變量:LESS:減去變量

@bpMobile: 600px 

我想要做的是減去該1px的

@media only screen and (max-width: @bpMobile - 1px) { 
} 

我怎樣才能用更少實現這一目標?

+1

只是去嘗試,似乎沒有上班。 – cusejuice

回答

10

您可以隨時使用此calc function

語法: calc(expression)

如:

abc { 
    width:calc(100%-20px) 
} 

Here都支持此功能的瀏覽器的列表

編輯1:

您可以在使用它以下兩種方式:

LESS輸入:

@bpMobile: 600px; 
max-width: calc(~'@{bpMobile} - 1px'); 

CSS輸出:

max-width: calc(600px - 1px); 

第二方式: 更少的輸入:

@bpMobile: 600px; 
max-width: calc(@bpMobile - 1px); 

CSS輸出:

max-width: calc(599px); 

有了第一個選項,calc參數會被轉義,以防止它們在編譯時被評估。在客戶端評估之前,這些值將保持完全靜態。

第二種選擇是在編譯時計算calc值。這將是一樣

max-width: @bpMobile - 1px; 

這將導致

max-width: 599px; 
+0

我可以在變量中使用它嗎?像calc(@bpMobile - 1px)? – cusejuice

+0

calc不支持媒體查詢 –

+0

第一種解決方案會很糟糕,即使它確實有效:畢竟,這兩個值(@bpMobile和1px)在less-compileTime都是已知的,所以第二種方式應該是這樣! - 話雖如此:還是不錯的,你指出的情況下,這是不可能的,「高度:100vh - @ someHeightInPx」,其中一個運行時'calc()'(= css中可讀的)是唯一的選擇... –

3

的問題是不是數學函數,它是你想在媒體查詢使用它。 The docs說,你需要讓整個查詢一個變量:

@bpMobile: 600px; 
@bpMobile1: @bpMobile - 1px; 

@singleQuery: ~"only screen and (max-width: @{bpMobile1})"; 

@media @singleQuery { 
} 
+0

我認爲這個網址現在已經變成http://lesscss.org/features/#features-overview-feature-operations – Nick

3

從freejosh的修復不適合我的lesscss 1.7.0工作。

什麼訣竅是簡單地增加paranthesis周圍的每一個變量或計算媒體查詢裏面:

@media only screen and (max-width: (@bpMobile - 1px)) { ... } 

@other: @bpMobile - 1px; 
@media only screen and (max-width: (@other)) { ... } 
+0

底部的解決方案爲我工作。關鍵是將所有內容完全按照所示方式分隔開,並在媒體查詢中的變量周圍添加括號。我正在使用LESS 2.3 – AgnosticDev

23

對不起,我回答這麼晚,但我有這個非常問題看起來LESS對於間距是挑剔的。您的計算還需要()

這是行不通的:

@media screen and (max-width: (@widthSmall-2)) { } 

然而,這將(注意變量和數字之間的空間):

@media screen and (max-width: (@widthSmall - 2)) { } 
+1

好吧,當然'Less'對於空格是挑剔的,因爲'-'可以是CSS中標識符的一部分。例如。我們不希望'max-width'從'max'減去'width'。至於'@ media'查詢值的parens - 是的,不管是否使用'--strict-math'選項,它們都是必需的。 –