درون نگری (Introspection)
در Sass، «درون نگری (Introspection)» یعنی بررسی داخل کد. این توابع مثل ابزار دیباگ عمل می کنند. وقتی چیزی کار نکند، کمک می کنند بفهمی مشکل کجاست.
توابع درون نگری Sass به زبان ساده
این توابع وجود ویژگی ها را می سنجند، نوع داده را برمی گردانند، و حتی توابع یا میکسین ها را فراخوانی می کنند.
بررسی پشتیبانی ویژگی: feature-exists
«ویژگی (Feature)» قابلیتی از Sass است؛ این تابع پشتیبانی را می سنجد.
$has-error: feature-exists("at-error");
.support-check {
--at-error: $has-error;
}
یافتن نوع و واحد: type-of ، unit ، unitless
«نوع (Type)» جنس داده است. «واحد (Unit)» مثل px است.
$t1: type-of(15px);
$u1: unit(15px);
$ul1: unitless(15);
$type-demo {
--type: $t1;
--unit: $u1;
--unitless: $ul1;
}
وجود تابع و میکسین: function-exists ، mixin-exists
این دو، بودنِ یک «تابع (Function)» یا «میکسین (Mixin)» را چک می کنند.
$fok: function-exists("nonsense");
$mok: mixin-exists("important-text");
.exists-demo {
--func-exists: $fok;
--mixin-exists: $mok;
}
متغیرها: variable-exists ، global-variable-exists
این ها وجود «متغیر (Variable)» را در محدوده فعلی یا سراسری می سنجند.
$a: 10px;
$b: 2rem !global;
$hasA: variable-exists(a);
$hasBGlobal: global-variable-exists(b);
.var-demo {
--has-a: $hasA;
--has-b-global: $hasBGlobal;
}
بررسی @content در میکسین: content-exists
این تابع می گوید آیا به میکسین یک بلوک «@content» پاس داده ای.
@mixin box() {
@if content-exists() {
@content;
}
}
.card {
@include box() {
border: 1px solid #ccc;
}
}
فراخوانی پویا: get-function ، call
با این دو می توانی نام تابع را بگیری و بعد آن را صدا بزنی.
@function double($n) {
@return $n * 2;
}
$fn: get-function("double");
$result: call($fn, 6);
.call-demo {
--result: $result;
}
چاپ نمایشی مقدار: inspect
«inspect» مقدار را به رشته قابل خواندن تبدیل می کند.
$val: (a: 1, b: 2);
$seen: inspect($val);
.inspect-demo {
--seen: "#{$seen}";
}
نکته: برای کار با انتخابگرها به بخش انتخابگرها (Selector) برو. همچنین، رنگ ها را در توابع رنگ (Color) ببین.
سه گام تمرین سریع
- با
type-ofنوع چند مقدار را بررسی کن. - با
feature-existsپشتیبانی یک ویژگی را بسنج. - با
get-functionوcallیک تابع را اجرا کن.
جمع بندی سریع
feature-existsپشتیبانی قابلیت را چک می کند.type-ofوunitاطلاعات مقدار را می دهند.variable-existsوmixin-existsوجود را می سنجند.get-functionوcallفراخوانی پویا می دهند.