Trong khoa học máy tính, chúng tôi sử dụng từ kẹp như một cách để hạn chế một số giữa hai số khác. Khi bị kẹp lại, một số sẽ giữ giá trị của chính nó nếu sống trong phạm vi áp đặt bởi hai giá trị khác, lấy giá trị thấp hơn nếu ban đầu thấp hơn nó hoặc giá trị cao hơn nếu ban đầu cao hơn nó.
Ví dụ nhanh trước khi đi xa hơn:
$clamp: clamp(42, $min: 0, $max: 1337); // 42 $clamp: clamp(42, $min: 1337, $max: 9000); // 1337 $clamp: clamp(42, $min: 0, $max: 1); // 1
Quay lại với CSS. Có một số cách mà bạn có thể cần giới hạn một số giữa hai số khác. Lấy opacity
ví dụ về thuộc tính: nó phải là một float (từ 0 đến 1). Đây thường là loại giá trị bạn muốn kẹp để đảm bảo rằng nó không âm hoặc không cao hơn 1.
Thực hiện một chức năng kẹp trong Sass có thể được thực hiện theo hai cách, cả hai cách đều tương đương nhau nhưng một cách thanh lịch hơn nhiều so với cách kia. Hãy bắt đầu với cái không quá tuyệt vời.
Cái bẩn thỉu
Phiên bản này dựa trên các if
lệnh gọi hàm lồng nhau . Về cơ bản, chúng tôi nói: nếu $number
thấp hơn $min
, thì giữ $min
, khác nếu $number
cao hơn $max
thì giữ $max
, khác giữ $number
.
/// Clamp `$number` between `$min` and `$max` /// @param (Number) $number - Number to clamp /// @param (Number) $min - Minimum value /// @param (Number) $max - Maximum value /// @return (Number) @function clamp($number, $min, $max) ( @return if($number $max, $max, $number)); )
Nếu bạn không tự tin lắm với các lệnh if lồng nhau, hãy nghĩ đến câu lệnh trước đó là:
@if $number $max ( @return $max; ) @return $number;
Cái sạch
Phiên bản này thanh lịch hơn nhiều vì nó sử dụng tốt cả hai min
và các max
chức năng từ Sass.
/// Clamp `$number` between `$min` and `$max` /// @param (Number) $number - Number to clamp /// @param (Number) $min - Minimum value /// @param (Number) $max - Maximum value /// @return (Number) @function clamp($number, $min, $max) ( @return min(max($number, $min), $max); )
Nghĩa đen có nghĩa là giữ mức tối thiểu giữa $max
và tối đa giữa $number
và $min
.
Thí dụ
Bây giờ, hãy tạo một hỗn hợp opacity nhỏ chỉ để trình diễn:
/// Opacity mixin /// @param (Float) $value - Opacity value /// @output `opacity` @mixin opacity($value) ( $clamped-value: clamp($value, 0, 1); @if $value != $clamped-value ( @warn "Mixin `opacity` needs a float; #($value) given, clamped to #($clamped-value)."; ) opacity: $clamped-value; )