2012-09-14 27 views
11

Biến thể lấy tỷ lệ phần trăm hoặc px giá trị, như:quy tắc CSS có điều kiện với ít hơn, dựa trên biến

@some-var: 50px; hoặc @some-var: 46%;

Làm thế nào tôi có thể định nghĩa một tập hợp các quy tắc CSS nếu giá trị là bằng pixel và một bộ quy tắc khác nếu các giá trị bằng tỷ lệ phần trăm?

Có cái gì đó như

if(isValueInPixels(@some-var)){ 

    // css rules here 


}else{ 

    // other rules here 
} 

?

+0

Tại sao bạn muốn làm điều đó? –

Trả lời

16

Tôi nghĩ bạn có thể sử dụng thứ gì đó mà họ gọi là Hỗn hợp được bảo vệ.

Hãy thử một cái gì đó như thế này ...

.mixin (@a) when (ispixel(@a)) { 
/* ... your pixel specific logic ... */ 
} 
.mixin (@a) when (ispercentage(@a)) { 
/* ... your percentage specific logic ... */ 
} 

.coolStuff { 
.mixin(50px); 
.mixin(50%); 
} 

Xem người gác mixins tại http://lesscss.org/

+0

Tôi tìm thấy những gì tôi cần ngoài câu trả lời này là mặc định có thể sử dụng hàm 'default()'. Từ các tài liệu tại http://lesscss.org/features/#mixin-guards-feature-conditional-mixins '.mixin (@a) khi (mặc định()) {...}' – Ash

2

Như Adam Spicer ghi nhận người gác mixins là giải pháp tốt nhất của bạn. Tuy nhiên, bây giờ LESS cung cấp một giải pháp để nhóm nhiều bảo vệ, điều này sẽ cho phép điều này được thực hiện với một bản mixin duy nhất. http://lesscss.org/features/#css-guards-feature

Ví dụ:

.mixin(@a){ 
    & when (ispixel(@a)){ 
    //logic 
    } 
    & when (ispercentage(@a)){ 
    //logic 
    } 
} 

Cách sử dụng:

selector{ 
    .mixin(50px); 
    .mixin(46%); 
} 
Các vấn đề liên quan