Bilgisayar biliminde, bir sayıyı diğer iki sayı arasında sınırlamanın bir yolu olarak kelepçe kelimesini kullanırız. Kelepçelendiğinde, bir sayı ya diğer iki değer tarafından empoze edilen aralıkta yaşıyorsa kendi değerini korur, başlangıçta ondan düşükse düşük değeri veya başlangıçta ondan daha yüksekse daha yüksek olanı alır.
Daha ileri gitmeden önce hızlı bir örnek olarak:
$clamp: clamp(42, $min: 0, $max: 1337); // 42 $clamp: clamp(42, $min: 1337, $max: 9000); // 1337 $clamp: clamp(42, $min: 0, $max: 1); // 1
CSS'ye geri dönüyoruz. Bir numaranın diğer ikisi arasında sınırlandırılmasına ihtiyaç duyabileceğiniz birkaç yol vardır. Örneğin opacity
özelliği ele alalım : bu bir kayan nokta olmalıdır (0 ile 1 arasında). Bu, genellikle ne negatif ne de 1'den yüksek olmadığından emin olmak için kelepçelemek isteyeceğiniz türden bir değerdir.
Sass'ta bir kenetleme işlevi uygulamak iki şekilde yapılabilir, her ikisi de tam olarak eşdeğerdir, ancak biri diğerinden çok daha zariftir. O kadar da harika olmayanla başlayalım.
Kirli olan
Bu sürüm, iç içe geçmiş if
işlev çağrılarına dayanır . Temel olarak diyoruz ki: eğer $number
daha düşükse $min
, o zaman tut $min
, aksi takdirde $number
daha yüksekse $max
, o zaman tut $max
, yoksa tut $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)); )
İç içe geçmiş çağrılardan pek emin değilseniz, önceki ifadeyi şu şekilde düşünün:
@if $number $max ( @return $max; ) @return $number;
Temiz olan
İkisinden de iyi kullanan beri bu sürümü çok daha zarif min
ve max
Sass gelen işlevler.
/// 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); )
Kelimenin tam anlamıyla, minimum $max
ve maksimum arasında $number
ve arasında tutmak anlamına gelir $min
.
Misal
Şimdi, gösteri olsun diye biraz opaklık karışımı oluşturalım:
/// 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; )