2013-09-05 106 views
17

tôi cần phải xác định chiều rộng trong mã SCSS của tôi như vậy:Sass được ghép nối thay vì thêm?

#example { 
    width: $currentWidth + 349 !important; 
} 

đâu $currentWidth được xác định bởi các vòng lặp.

Tuy nhiên, Sass luôn kết thúc nối hai số thay vì thực hiện số học.

Tôi cũng đã cố gắng:

width: #{$currentWidth + 349}px !important;

Những kết quả vẫn nối.

Tôi tự hỏi mình đang làm gì sai? Tôi biết điều này là cực kỳ cơ bản, nhưng tôi cũng không thể tìm thấy thông tin tốt về cách Sass xử lý số học

+4

là '$ currentWidth' một chuỗi hoặc một con số? Nếu nó là một chuỗi, sau đó nó sẽ nối. Sass chỉ có thể làm số học nếu cả hai thực thể thuộc loại số (ví dụ: Sass diễn giải '" 10 "+ 349' giống như cách nó làm' "thịt viên" + 349'). – cimmanon

Trả lời

26

Giả sử $currentWidth là một số nguyên.

Sass:

$currentWidth: 30; 

#example { 
    width: unquote(($currentWidth + 349) + 'px ' + !important); 
} 

CSS OUTPUT:

#example { 
    width: 379px !important; 
} 

Bạn có thể kiểm tra nó ở đây:

http://sass-lang.com/try.html

+0

Bằng cách nối đơn vị vào số nguyên như thế này, bạn sẽ nhận được một chuỗi. Điều này là sai và bạn nên * không bao giờ * làm điều này * bao giờ *. – cimmanon

+1

Chính xác những gì tôi đã nói: '($ currentWidth + 349) + 'px'' là một chuỗi. Bạn nên ** không bao giờ ** làm điều này nếu bạn đang cố gắng thay đổi một giá trị đơn vị thành một giá trị hợp nhất. – cimmanon

+0

Được rồi, tôi sắp xếp xem bạn đang nói gì, nhưng bạn không thực sự giải thích tại sao "không bao giờ" làm điều này. Ngoài ra, bạn sẽ đề xuất điều gì? Điều này có phải là '#example { chiều rộng: abs ($ currentWidth + 349) + px! Quan trọng; } 'là một cách tốt hơn? –