SASS'taki `if` fonksiyonu
Bu makale SASS'taki if fonksiyonunu açıklar.
Adım adım, if fonksiyonunun temellerinden ileri tekniklere kadar her şeyi ele alacağız.
YouTube Video
SASS'taki if fonksiyonu
if() fonksiyonu, SASS tarafından sağlanan, bir boolean koşula göre iki değerden birini döndüren basit bir koşullu fonksiyondur. JavaScript'in üçlü (ternary) operatörüne benzer.
Sözdizimi
Sözdizimi aşağıdaki gibidir:.
1// if(condition, trueValue, falseValue)conditiondoğruysatrueValuedöner; yanlışsafalseValuedöner.
Temel Kullanım
Örneğin, tema koyu mu açık mı olduğuna bağlı olarak arka plan ve metin renklerini değiştirmek için if() fonksiyonunu kullanabilirsiniz.
Örnek Kod
1$theme: "dark";
2
3$background-color: if($theme == "dark", black, white);
4$text-color: if($theme == "dark", white, black);
5
6body {
7 background-color: $background-color;
8 color: $text-color;
9}$themedeğişkeni"dark"ise arka plan siyah, metin beyaz olur;"light"ise arka plan beyaz, metin siyah olur.
Oluşturulan CSS
1body {
2 background-color: black;
3 color: white;
4}$themedeğişkeni"dark"olduğundan arka plan siyah, metin beyazdır.
@if deyimi ile if() fonksiyonu arasındaki farklar
Sass, koşullu dallanma için bir @if deyimi ve bir if() fonksiyonu sağlar, ancak bunlar farklı amaçlar için kullanılır.
Örnek Kod
1$theme: "dark";
2
3// `@if` statement: Compile-time branching (syntax level)
4$background-color: null;
5@if $theme == "dark" {
6 $background-color: black;
7} @else if $theme == "light" {
8 $background-color: white;
9} @else {
10 $background-color: gray;
11}
12
13// `if()` function: Returns a value (expression level)
14$text-color: if($theme == "dark", white, black);
15
16body {
17 background-color: $background-color;
18 color: $text-color;
19}@ifdeyimi, Sass derleme zamanında hangi kodun çıktıya yazılacağını kontrol eder.- Buna karşılık,
if()fonksiyonu bir değer döndürür ve ifadeler içinde değerleri dinamik olarak değiştirmek için kullanılır.
Oluşturulan CSS
1body {
2 background-color: black;
3 color: white;
4}- Bu örnekte,
$theme"dark"olduğundan, siyah arka plan ve beyaz metin rengi uygulanır. - İki temel fark şunlardır:
@ifdeyimi yapıyı kontrol eder veif()fonksiyonu bir değer döndürür.
İç içe if fonksiyonları kullanma
Karmaşık dallanmalara ihtiyaç duyduğunuzda if fonksiyonlarını iç içe kullanabilirsiniz.
Örnek Kod
1$theme: "custom";
2$custom-color: blue;
3
4$background-color: if(
5 $theme == "dark",
6 black,
7 if(
8 $theme == "light",
9 white,
10 $custom-color
11 )
12);
13
14body {
15 background-color: $background-color;
16}$theme"dark"ise siyah döner;"light"ise beyaz döner; aksi halde varsayılan değeri ($custom-color) döner.
Oluşturulan CSS
1body {
2 background-color: blue;
3}$themedeğişkenicustomolduğundan arka plan rengi mavi.
Pratik kullanım örnekleri
Tema değiştirme
Aşağıda, temaya göre buton stillerini değiştiren bir örnek yer alıyor.
1$theme: "dark";
2
3.button {
4 background-color: if($theme == "dark", #333, #fff);
5 color: if($theme == "dark", #fff, #333);
6 border: 1px solid if($theme == "dark", #444, #ccc);
7}- Bu kod,
$themedeğişkeninin değerine göre bir butonun arka plan, metin ve kenarlık renklerini değiştiren bir SASS koşul örneğidir.if()fonksiyonu, koyu ve açık temalar için stilleri dinamik olarak ayarlamak amacıyla kullanılır.
Oluşturulan CSS
1.button {
2 background-color: #333;
3 color: #fff;
4 border: 1px solid #444;
5}- Temayı değiştirerek genel tasarımı tutarlı bir şekilde değiştirebilirsiniz.
İleri örnek: Renk kontrastını dinamik olarak ayarlama
Arka plan rengine bağlı olarak metin rengini otomatik ayarlayan bir örneğe bakalım.
Örnek Kod
1@use "sass:color";
2
3$background-color: #000;
4
5$text-color: if(
6 color.channel($background-color, "lightness", $space: hsl) > 50%,
7 black,
8 white
9);
10
11body {
12 background-color: $background-color;
13 color: $text-color;
14}color.channel()fonksiyonu, arka plan renginin açıklığını (lightness) elde etmek için kullanılır. Bu değer50%'den büyükse siyah; küçükse metin rengi olarak beyaz seçilir ve arka planla kontrast otomatik olarak optimize edilir.
Oluşturulan CSS
1body {
2 background-color: #000;
3 color: white;
4}if()fonksiyonunu kullanarak, kontrast ayarlama gibi tasarım erişilebilirliğini dikkate alan esnek stiller uygulayabilirsiniz.
@function ile birleştirme
@function içinde if fonksiyonunun kullanılması daha esnek bir stil tasarımına olanak tanır.
Örnek Kod
1@function theme-color($theme, $type) {
2 @return if(
3 $theme == "dark",
4 if(
5 $type == "background",
6 black,
7 white
8 ),
9 if(
10 $type == "background",
11 white,
12 black
13 )
14 );
15}
16
17body {
18 background-color: theme-color("dark", "background");
19 color: theme-color("dark", "text");
20}- Bu kod, tema ve renk türüne göre uygun renkleri döndürmek için bir
@functioniçindeif()kullanımını gösterir. Bu, her tema için tutarlı ve yeniden kullanılabilir bir stil tasarımını mümkün kılar.
Oluşturulan CSS
1body {
2 background-color: black;
3 color: white;
4}if()fonksiyonundan yararlanan yardımcı fonksiyonlar oluşturarak ve kullanarak, tüm projenin bakım kolaylığını artırabilirsiniz.
Notlar
-
iffonksiyonu dinamik değerlerle kullanılamaz CSS başlı başına statik bir dil olduğundan,iffonksiyonu değerleri SASS derlenirken belirler. Çalışma zamanı koşullu mantığı için JavaScript kullanmanız gerekir. -
Okunabilirliğe öncelik verin İç içe
ifişlevleri karmaşık hale gelebilir ve okunabilirliği olumsuz etkileyebilir, bu nedenle kodunuzu düzenlemek için gerektiğinde SASS@mixinve@functionkullanabilirsiniz.
Sonuç
SASS'taki if fonksiyonu, koşullara bağlı olarak farklı değerler döndüren güçlü bir araçtır. Yalnızca basit koşullar için değil, tema değiştirme ve dinamik stil ayarları gibi birçok senaryoda da kullanışlıdır. Ancak karmaşık koşullarla çalışırken okunabilirliğe dikkat edin ve bakım kolaylığını artırmak için @mixin ve @function kullanın.
if fonksiyonuna hâkim olarak daha verimli ve esnek bir stil tasarımına ulaşabilirsiniz.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.