Giá trị biến âm Sass?


107

Tôi có một số bộ chọn scss trong đó tôi sử dụng cùng một số lượng tích cực và tiêu cực, như trong:

padding: 0 15px 15px;
margin: 0 -15px 20px -15px;

Tôi muốn sử dụng một biến cho tất cả số tiền 15px, nhưng điều này không hoạt động:

$pad: 15px;
padding: 0 $pad $pad;
margin: 0 -$pad 20px -$pad;

Số tiền ký quỹ chuyển đổi thành số dương. Tui bỏ lỡ điều gì vậy?

Câu trả lời:


215

Hãy thử nó như thế này

margin: 0 (-$pad) 20px (-$pad);

1
Đã tự động thử cách tiếp cận này - có vẻ như không hoạt động khi sử dụng trong hàm calc. Edit: Có vẻ như bạn không cần phải sử dụng dấu ngoặc đơn khi sử dụng calc, nhưng bạn cần phải suy stackoverflow.com/questions/17982111/...
Kevin


2

Tôi đang thêm hai xu của mình sau khi xem xét hai câu trả lời trước đó, nhưng sau đó đọc câu này (tôi nhấn mạnh):

Bạn đặc biệt#{$number}px nên tránh sử dụng nội suy như thế nào . Điều này không thực sự tạo ra một con số! Nó tạo ra một chuỗi không được trích dẫn trông giống như một số, nhưng sẽ không hoạt động với bất kỳ hoạt động hoặc hàm số nào. Cố gắng làm cho đơn vị toán của bạn sạch sẽ để $numberđã có đơn vị pxhoặc viết $number * 1px.

Nguồn

Vì vậy, tôi tin rằng cách chính xác sẽ là như sau, điều này bảo toàn khả năng toán học của SASS / SCSS:

$pad: 15px;
padding: 0 $pad $pad;
margin: 0 $pad*-1 20px $pad*-1;

Thoạt nhìn, nó có vẻ là chọn nit (câu trả lời của bạn), nhưng nhìn thứ hai thì nó thực sự là câu trả lời tốt hơn. Rốt cuộc, nếu biến trở thành biến âm thì câu trả lời sẽ trở thành dương! $ pad: -2rem; ... margin: 0 - # {$ pad}; // trở thành margin: 0 --2rem; ký quỹ: 0 $ pad * -1; // trở thành margin: 0 2rem;
Fnordius
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.