Dalam ilmu komputer, kami menggunakan kata penjepit sebagai cara untuk membatasi angka di antara dua angka lainnya. Saat dijepit, sebuah angka akan menyimpan nilainya sendiri jika hidup dalam kisaran yang ditentukan oleh dua nilai lainnya, mengambil nilai yang lebih rendah jika awalnya lebih rendah dari itu, atau lebih tinggi jika awalnya lebih tinggi darinya.
Sebagai contoh cepat sebelum melangkah lebih jauh:
$clamp: clamp(42, $min: 0, $max: 1337); // 42 $clamp: clamp(42, $min: 1337, $max: 9000); // 1337 $clamp: clamp(42, $min: 0, $max: 1); // 1
Kembali ke CSS. Ada beberapa cara di mana Anda mungkin memerlukan sebuah nomor untuk dibatasi di antara dua lainnya. Ambil opacity
properti sebagai contoh: itu harus berupa float (antara 0 dan 1). Ini biasanya jenis nilai yang ingin Anda jepit untuk memastikan nilainya tidak negatif atau lebih tinggi dari 1.
Menerapkan fungsi penjepit di Sass dapat dilakukan dengan dua cara, keduanya benar-benar setara namun yang satu jauh lebih elegan daripada yang lain. Mari kita mulai dengan yang tidak terlalu bagus.
Yang kotor
Versi ini bergantung pada if
pemanggilan fungsi bertingkat . Pada dasarnya kita katakan: jika $number
lebih rendah dari $min
, maka simpan $min
, else if $number
lebih tinggi dari $max
, maka simpan $max
, else simpan $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)); )
Jika Anda tidak terlalu yakin dengan panggilan if bersarang, pikirkan pernyataan sebelumnya sebagai:
@if $number $max ( @return $max; ) @return $number;
Yang bersih
Versi ini jauh lebih elegan karena memanfaatkan keduanya dengan baik min
dan max
fungsi dari 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); )
Secara harfiah berarti menjaga minimum antara $max
dan maksimum antara $number
dan $min
.
Contoh
Sekarang, mari buat sedikit campuran opacity hanya untuk demonstrasi:
/// 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; )