$marg: 20px;
#div1 {
margin: 0 20px 0 -20px;
}
Giá trị thuộc tính 20px
và -20px
có thể được thay thế bằng biến $marg
. Cách đơn giản nhất là:
css
$marg: 20px;
#div1 {
margin: 0 $marg 0 -$marg;
}
Tuy nhiên, khi biên dịch, đoạn code này tạo ra CSS sau:
css
$marg: 20px;
#div1 {
margin: 0 20px -20px;
}
Điều này xảy ra vì trình biên dịch SASS coi 0 -$marg
là phép trừ và xuất ra -20px. Do đó, khi muốn sử dụng phủ định của biến, CSS có thể không mong muốn. Trình biên dịch SASS có thể nhầm lẫn ý định là phép trừ nhị phân.
Có nhiều cách để giải quyết vấn đề này.
-
Sử dụng dấu ngoặc đơn: Đặt biến trong dấu ngoặc đơn sẽ ngăn trình biên dịch thực hiện phép trừ.
html
$marg: 20px; #div1 { margin: 0 $marg 0 (-$marg); }
-
Thực hiện phép nhân với số âm: Chỉ cần nhân biến với -1 sẽ tạo ra số đối của nó. Đồng thời, nó vẫn giữ nguyên đơn vị gốc.
css
$marg: 20px; #div1 { margin: 0 $marg 0 -1*$marg; }
-
Sử dụng interpolation: Interpolation chuyển đổi giá trị thành một chuỗi không được trích dẫn. Nó có thể dùng để phủ định giá trị của biến. Tuy nhiên, cách này không được khuyến nghị vì chuỗi không trích dẫn trong CSS đầu ra trông giống số. Nó không hoạt động với toán tử số học, có thể gây hiểu nhầm.
html
$marg: 20px; #div1 { margin: 0 $marg 0 -#{$marg}; }
#div1 { margin: 0 20px 0 -20px; }Bằng cách này, ta có thể dùng biến SASS cho cả trường hợp dương và âm. Từ đó, thúc đẩy tái sử dụng biến và code dễ bảo trì hơn.