Web geliştirme süreçlerinde stil yönetimi, projenin büyüklüğü ve karmaşıklığı arttıkça zorlaşabilir. Tekrar eden renkler, font boyutları, boşluk değerleri gibi CSS özelliklerini her yerde manuel olarak tanımlamak hem zaman kaybına yol açar hem de bakımını oldukça güçleştirir. İşte tam bu noktada Sass (Syntactically Awesome Style Sheets) devreye girerek CSS yazımını çok daha esnek, güçlü ve yönetilebilir hale getirir. Sass’ın sunduğu en temel ve güçlü özelliklerden biri de “Değişkenler”dir.
Bu teknik rehberde, Sass değişkenlerinin ne olduğunu, nasıl kullanıldığını, kapsamlarını, farklı türlerini ve gerçek dünya projelerinde nasıl pratik faydalar sağladığını detaylı bir şekilde inceleyeceğiz. Ayrıca, en sık karşılaşılan sorulara yanıtlar sunarak Sass değişkenlerini ustaca kullanmanızı sağlayacak bilgiler edineceksiniz.
Sass Değişkenlerine Giriş: Neden İhtiyaç Duyarız?
Geleneksel CSS’te, bir rengi veya bir font boyutunu değiştirmek istediğinizde, bu değeri kullandığınız her yerde tek tek güncellemeniz gerekir. Bu durum, özellikle büyük projelerde veya tema değişikliklerinde korkunç bir kabusa dönüşebilir. Sass değişkenleri, bu sorunu kökten çözerek stil değerlerini merkezileştirmenizi sağlar.
Sass değişkenleri, tıpkı programlama dillerindeki değişkenler gibi, bir değeri depolayan adlandırılmış yer tutuculardır. Bu sayede, bir değeri bir kez tanımlayıp projenizin herhangi bir yerinde tekrar tekrar kullanabilirsiniz. Değeri güncellemeniz gerektiğinde ise sadece değişkenin tanımlandığı yeri değiştirmeniz yeterli olur; bu değişiklik, değişkenin kullanıldığı her yere otomatik olarak yansır. Bu yaklaşım, kod tekrarını azaltır, stil sayfalarınızı daha okunaklı ve bakımı kolay hale getirir.
Sass Değişkenlerinin Temel Faydaları:
- Kod Tekrarını Azaltma: Ortak değerleri bir kez tanımlayıp her yerde kullanırsınız.
- Daha Kolay Bakım: Bir değeri güncellemek için tek bir yere müdahale etmeniz yeterlidir.
- Daha Okunabilir Kod: Anlamlı değişken isimleri kullanarak kodunuzun ne anlama geldiğini daha kolay anlarsınız.
- Tutarlılık: Proje genelinde renk, font, boşluk gibi değerlerin tutarlı olmasını sağlar.
- Esneklik: Tema değişiklikleri veya hızlı prototipleme için idealdir.
Sass Değişkenlerinin Tanımlanması ve Kullanımı
Sass’ta bir değişken tanımlamak oldukça basittir. Değişken isimleri bir dolar işareti ($) ile başlar, ardından değişkenin adı ve iki nokta üst üste (:) ile değeri gelir. Her değişken tanımı bir noktalı virgül (;) ile sonlandırılmalıdır.
Değişken Tanımlama Sözdizimi:
$degisken-adi: deger;
Örnek Kullanım:
Birincil renk, ikincil renk ve font boyutu gibi temel stil değerlerini değişkenler olarak tanımlayalım:
// _variables.scss
$primary-color: #007bff;
$secondary-color: #6c757d;
$font-size-base: 16px;
$line-height-base: 1.5;
$border-radius: 0.25rem;
Bu değişkenleri Sass dosyalarınızda kullanmak için, tıpkı bir CSS özelliği değeriymiş gibi değişkenin adını yazmanız yeterlidir:
// style.scss
@import 'variables'; // Değişkenleri içeren dosyayı dahil ediyoruz
body {
font-family: Arial, sans-serif;
font-size: $font-size-base;
line-height: $line-height-base;
color: #333; // Normal bir CSS değeri
}
.button {
background-color: $primary-color;
color: white;
padding: 10px 20px;
border: none;
border-radius: $border-radius;
cursor: pointer;
&.secondary {
background-color: $secondary-color;
}
}
h1 {
color: $primary-color;
font-size: $font-size-base * 2; // Matematiksel işlemler de yapabiliriz
}
Yukarıdaki örnekte, $primary-color, $secondary-color, $font-size-base, $line-height-base ve $border-radius değişkenlerini tanımladık ve farklı CSS kurallarında kullandık. Dikkat ederseniz, h1 elementi için $font-size-base * 2 şeklinde matematiksel bir işlem de gerçekleştirdik. Sass, değişkenlerle toplama, çıkarma, çarpma ve bölme gibi temel matematiksel işlemleri yapmanıza olanak tanır, bu da daha dinamik ve ölçeklenebilir stil hesaplamaları yapmanızı sağlar.
Değişken Kapsamı (Scope) ve Türleri
Sass değişkenlerinin önemli bir yönü, onların “kapsamıdır”. Bir değişkenin kapsamı, o değişkenin Sass dosyasının hangi bölümlerinden erişilebilir olduğunu belirler. Kapsam, değişkenlerin beklenmedik davranışlar sergilemesini önlemek ve kodunuzu daha düzenli tutmak için hayati öneme sahiptir.
Kapsam Kuralları:
- Global Kapsam: En üst seviyede (herhangi bir kural bloğunun dışında) tanımlanan değişkenler global kapsama sahiptir. Bu değişkenlere dosyanın her yerinden ve bu dosyayı
@importeden diğer dosyalardan erişilebilir. - Yerel Kapsam: Bir CSS kural bloğunun (örneğin, bir seçici veya bir
@mixiniçindeki) içinde tanımlanan değişkenler yerel kapsama sahiptir. Bu değişkenlere yalnızca tanımlandıkları blok içinde ve alt bloklarda erişilebilir. Blok dışından erişilemezler.
Örnek: Kapsam
// Global değişken
$global-text-color: #333;
.container {
// Yerel değişken
$container-bg: #f8f8f8;
color: $global-text-color; // Global değişkene erişim
background-color: $container-bg; // Yerel değişkene erişim
.item {
// Bu blok içinde $container-bg'ye erişilebilir
border: 1px solid $container-bg;
color: $global-text-color;
}
}
// Burada $container-bg'ye erişilemez, hata verir.
// background-color: $container-bg; // Hata!
!global Bayrağı: Normalde yerel olarak tanımlanan bir değişkeni global hale getirmek isterseniz, değişken tanımının sonuna !global bayrağını ekleyebilirsiniz. Ancak bu, genellikle iyi bir uygulama değildir ve kapsamı karmaşıklaştırabilir.
$initial-value: 10px;
.some-block {
$initial-value: 20px !global; // Bu değişkeni global olarak günceller
padding: $initial-value; // 20px
}
div {
margin: $initial-value; // Artık 20px olacak
}
Sass Değişken Türleri ve Değerleri:
Sass değişkenleri, çeşitli veri türlerini depolayabilir, bu da onları oldukça esnek kılar:
- Sayılar (Numbers):
10px,1.5rem,2em,100%. Birimlerle veya birimsiz olabilirler. - Dizeler (Strings):
"Merhaba Dünya",'my-font',sans-serif. Tırnak işaretli veya tırnak işaretsiz olabilirler. - Renkler (Colors):
#ff0000,red,rgba(0,0,0,0.5),hsl(0, 100%, 50%). Sass, renkler üzerinde matematiksel işlemler ve özel renk fonksiyonları (darken(),lighten(),mix()vb.) yapmanıza olanak tanır. - Booleans (Mantıksal Değerler):
true,false. Genellikle@ifkoşullarıyla birlikte kullanılırlar. - Listeler (Lists):
(1px solid black),(top, right, bottom, left),(Arial, sans-serif). Birden fazla değeri tek bir değişkende saklamak için kullanılır. Virgül veya boşlukla ayrılabilirler. - Haritalar (Maps):
(key1: value1, key2: value2). Anahtar-değer çiftlerini depolamak için kullanılır. Özellikle tema yönetimi veya breakpoint tanımlamaları için çok güçlüdür.
Örnek: Harita (Map) Kullanımı
Bir renk paletini veya breakpointleri bir harita içinde tanımlamak çok pratiktir:
$colors: (
"primary": #007bff,
"secondary": #6c757d,
"success": #28a745,
"danger": #dc3545
);
$breakpoints: (
"sm": 576px,
"md": 768px,
"lg": 992px,
"xl": 1200px
);
.alert {
background-color: map-get($colors, "danger"); // Haritadan değer çekme
padding: 1rem;
border-radius: $border-radius;
}
@media (min-width: map-get($breakpoints, "md")) {
.hero {
font-size: 2rem;
}
}
map-get() fonksiyonu, bir haritadan belirli bir anahtara karşılık gelen değeri almanızı sağlar. Bu, dinamik ve modüler stil sistemleri oluşturmak için kritik bir özelliktir.
Pratik Kullanım Senaryoları
Sass değişkenleri, modern web geliştirme projelerinde birçok farklı senaryoda kullanılabilir. İşte en yaygın ve faydalı kullanım durumlarından bazıları:
1. Renk Paletleri Yönetimi
Projenizdeki tüm renkleri tek bir yerde tanımlamak, marka kimliğinizin tutarlılığını sağlamanın en iyi yoludur. Renkleri bir harita içinde düzenlemek, renk paletinizi daha da organize hale getirir.
// _colors.scss
$brand-colors: (
"primary": #6f42c1,
"secondary": #fd7e14,
"accent": #20c997,
"dark": #343a40,
"light": #f8f9fa
);
$text-color: map-get($brand-colors, "dark");
$heading-color: map-get($brand-colors, "primary");
body {
color: $text-color;
}
h1, h2, h3 {
color: $heading-color;
}
.btn-primary {
background-color: map-get($brand-colors, "primary");
color: map-get($brand-colors, "light");
}
2. Tipografi Ölçekleri
Font boyutları, satır yükseklikleri ve font ailelerini değişkenler aracılığıyla yönetmek, projenizin tipografik hiyerarşisini kolayca kontrol etmenizi sağlar.
// _typography.scss
$font-stack-base: "Helvetica Neue", Helvetica, Arial, sans-serif;
$font-stack-heading: Georgia, serif;
$base-font-size: 1rem; // 16px
$h1-font-size: $base-font-size * 2.5; // 40px
$h2-font-size: $base-font-size * 2; // 32px
$h3-font-size: $base-font-size * 1.75; // 28px
$base-line-height: 1.6;
body {
font-family: $font-stack-base;
font-size: $base-font-size;
line-height: $base-line-height;
}
h1 {
font-family: $font-stack-heading;
font-size: $h1-font-size;
line-height: 1.2;
}
3. Boşluk ve Boyutlandırma
Margin, padding ve diğer boyutlandırma değerlerini değişkenler olarak tanımlamak, tutarlı bir arayüz ve kolayca ayarlanabilir bir tasarım sistemi oluşturmanıza yardımcı olur. Genellikle bir “spacing scale” (boşluk ölçeği) oluşturulur.
// _spacing.scss
$spacer: 1rem; // 16px
$spacers: (
0: 0,
1: $spacer * 0.25, // 4px
2: $spacer * 0.5, // 8px
3: $spacer, // 16px
4: $spacer * 1.5, // 24px
5: $spacer * 3 // 48px
);
.mb-3 { // Margin Bottom 3
margin-bottom: map-get($spacers, 3);
}
.py-2 { // Padding Top/Bottom 2
padding-top: map-get($spacers, 2);
padding-bottom: map-get($spacers, 2);
}
4. Tema Yönetimi
Sass değişkenleri, açık ve koyu tema gibi farklı temaları yönetmek için de harikadır. Temaya özel değişken setleri oluşturup, duruma göre bunları dahil edebilirsiniz.
// _light-theme-vars.scss
$background-color: #ffffff;
$text-color: #333333;
$border-color: #dddddd;
// _dark-theme-vars.scss
$background-color: #333333;
$text-color: #ffffff;
$border-color: #555555;
// style.scss (Örnek kullanım)
// @import 'light-theme-vars'; // Varsayılan tema
// veya
// @import 'dark-theme-vars'; // Koyu tema için
Bu yöntem, JavaScript ile dinamik tema geçişleri için de bir temel oluşturabilir, ancak Sass derleme zamanında çalıştığı için dinamik geçişler için daha çok CSS Custom Properties (CSS Değişkenleri) tercih edilir. Ancak Sass değişkenleri, farklı tema varyasyonlarını derleme zamanında oluşturmak için kullanılabilir.
Sonuç ve Sıkça Sorulan Sorular (SSS)
Sass değişkenleri, modern ve sürdürülebilir CSS yazımının temel taşlarından biridir. Kod tekrarını azaltma, bakım kolaylığı, okunabilirlik ve tutarlılık gibi pek çok avantaj sunarak stil sayfalarınızı daha güçlü ve yönetilebilir hale getirirler. Renklerden fontlara, boşluklardan breakpoint’lere kadar her türlü stil değerini değişkenler aracılığıyla merkezileştirmek, büyük projelerde dahi düzeni korumanın anahtarıdır.
Sass’ın sunduğu bu esneklik sayesinde, tasarım sistemleri oluşturmak, temaları kolayca değiştirmek ve karmaşık arayüzleri tutarlı bir şekilde geliştirmek mümkün hale gelir. Değişkenleri doğru bir şekilde kullanmak, Sass’ın gücünden tam olarak faydalanmanın ilk adımıdır.
Sıkça Sorulan Sorular (SSS):
1. Sass değişkenleri ile CSS Custom Properties (CSS Değişkenleri) arasındaki fark nedir?
Sass değişkenleri derleme (compile) zamanında işlenir ve nihai CSS çıktısında yer almazlar. Yani, Sass değişkenlerinin değerleri CSS’e dönüştürülmeden önce belirlenir. CSS Custom Properties (--degisken-adi: deger;) ise tarayıcı tarafından çalışma (runtime) zamanında okunur ve değiştirilebilir. Bu, JavaScript ile dinamik tema değişiklikleri veya kullanıcı etkileşimlerine dayalı stil güncellemeleri için CSS Custom Properties’i daha uygun hale getirir. Sass değişkenleri daha çok geliştirme zamanı optimizasyonları ve kod organizasyonu için kullanılırken, CSS Custom Properties daha çok dinamik stil değişiklikleri için tercih edilir.
2. Değişkenlerimi nerede tanımlamalıyım?
Genel olarak, tüm global değişkenlerinizi (renkler, fontlar, boşluklar, breakpoint’ler vb.) tek bir Sass partial dosyasında (örneğin, _variables.scss veya _config.scss) tanımlamak en iyi uygulamadır. Daha sonra bu dosyayı, diğer Sass dosyalarınızın en başında @import veya @use (Sass modül sistemi) ile dahil edersiniz. Bu, değişkenlerinize projenin her yerinden erişilebilmesini sağlar ve onları kolayca bulup yönetmenize yardımcı olur.
3. Çok fazla Sass değişkeni kullanmak kötü müdür?
Hayır, aksine iyi bir uygulamadır. İyi tanımlanmış ve düzenli değişkenler kullanmak, kodunuzun daha modüler, okunabilir ve bakımı kolay olmasını sağlar. Ancak, her küçük değer için bir değişken tanımlamak yerine, anlamlı ve tekrar eden değerler için değişkenler oluşturmaya odaklanmalısınız. Örneğin, her piksel değeri için bir değişken yerine, bir boşluk ölçeği (spacing scale) veya tipografi ölçeği gibi mantıksal gruplar halinde değişkenler tanımlamak daha verimlidir.
4. Sass değişken isimleri için en iyi uygulama nedir?
Değişken isimleri açıklayıcı ve tutarlı olmalıdır. Genellikle kebab-case ($primary-color, $font-size-base) kullanılır. Değişkenin neyi temsil ettiğini açıkça belirten isimler seçin. Örneğin, $red yerine $brand-primary veya $error-color gibi daha semantik isimler kullanmak, kodunuzun amacını daha iyi anlamanızı sağlar.
5. Sass değişkenlerini nasıl güncelleyebilirim?
Bir Sass değişkeninin değeri, aynı isimle yeniden tanımlanarak güncellenebilir. Ancak, kapsam kurallarına dikkat etmek önemlidir. Eğer bir değişkeni global olarak güncellemek istiyorsanız, onu global kapsamda yeniden tanımlamanız veya !global bayrağını kullanmanız gerekir. Yerel bir kapsamda yapılan yeniden tanımlama, yalnızca o kapsama özel olacaktır.
