SASS'ta Yineleme
Bu makale, SASS'ta yinelemenin nasıl yapılacağını açıklamaktadır.
SASS'ta yinelemeyi, gerçek kod örnekleriyle adım adım nasıl yapacağınızı açıklayacağız.
YouTube Video
SASS'ta Yineleme
SASS'ta yineleme, kod tekrardan kaçınmanıza ve esnek, yeniden kullanılabilir stiller oluşturmanıza yardımcı olur.
SASS'ta yineleme kullanma nedenleri
Yineleme kullanmanın aşağıdakiler gibi çeşitli avantajları vardır:.
- Yeniden kullanılabilirlik artar, benzer kalıp stillerini kolayca üretebilirsiniz.
- Bakım kolaylığı artar, tüm stilleri bir kerede değiştirmek daha kolay olur.
- Hataları azaltır ayrıca.
Örneğin, farklı renklere sahip butonlar veya birden çok boyutta bileşenler için stilleri tek seferde oluşturabilirsiniz.
SASS'ta yineleme için kullanılan sözdizimi
SASS'ta yineleme için kullanılan ana sözdizimi aşağıdaki gibidir:.
@forkullanarak belirli bir sayı aralığında yineleme yapabilirsiniz.@eachkullanarak listeler veya haritalar üzerinde döngü yapabilirsiniz.@whilekullanarak belirli bir koşul karşılanana kadar döngü yapabilirsiniz.
@for ile yineleme
@for belirli bir sayı aralığında tekrarlı işlemler yapar.
Sözdizimi
1/*
2@for $i from <start> to <end> {
3 ...
4}
5
6@for $i from <start> through <end> {
7 ...
8}
9*/<start>ve<end>için başlangıç ve bitiş değerlerini belirtin.tokullanıldığında bitiş değeri hariç tutulur,throughile ise dahil edilir.
Örnek
Aşağıdaki kod, her seferinde 1px artan kenar kalınlığına sahip sınıfları otomatik olarak üretir.
1@for $i from 1 through 5 {
2 .border-#{$i} {
3 border-width: #{$i}px;
4 }
5}- Bu kod, her birinde kenar kalınlığı 1px artan sınıfları otomatik olarak oluşturur. Burada
@fordirektifi ile 1'den 5'e kadar döngü yapılır.
Oluşturulan CSS
1.border-1 {
2 border-width: 1px;
3}
4.border-2 {
5 border-width: 2px;
6}
7.border-3 {
8 border-width: 3px;
9}
10.border-4 {
11 border-width: 4px;
12}
13.border-5 {
14 border-width: 5px;
15}.border-1'den.border-5'e kadar olan sınıflar birer birer oluşur ve her biri 1px daha kalın kenar ile artar.
@each ile yineleme
@each liste veya haritaları kullanarak döngü yapar. Düzenli sınıfları verimli bir şekilde üretmek istediğinizde faydalıdır.
Sözdizimi
1/*
2@each $item in <list> {
3 ...
4}
5*/Örnek 1: Liste Kullanımı
Aşağıdaki kod, birden fazla metin rengi sınıfı oluşturur.
1@each $color in ("red", "blue", "green") {
2 .text-#{$color} {
3 color: #{$color};
4 }
5}- Bu kod, listedeki her renk için otomatik olarak metin rengi sınıfları oluşturur.
@eachdirektifi ile listedeki her değer sırayla işlenir.
Oluşturulan CSS
1.text-red {
2 color: red;
3}
4.text-blue {
5 color: blue;
6}
7.text-green {
8 color: green;
9}- SASS dosyası CSS'ye derlendiğinde, listedeki her renk için
.text-red,.text-blue,.text-greengibi sınıflar oluşturulur.
Örnek 2: Harita (Map) Kullanımı
Bir harita (map) kullanmak, anahtar-değer çiftleriyle çalışmanıza olanak tanır. Aşağıdaki örnekte, buton arka plan renkleri harita kullanılarak tanımlanmıştır.
1$colors: (
2 primary: #3498db,
3 success: #2ecc71,
4 danger: #e74c3c
5);
6
7@each $name, $hex in $colors {
8 .bg-#{$name} {
9 background-color: #{$hex};
10 }
11}Oluşturulan CSS
1.bg-primary {
2 background-color: #3498db;
3}
4.bg-success {
5 background-color: #2ecc71;
6}
7.bg-danger {
8 background-color: #e74c3c;
9}- SASS dosyası CSS'ye derlendiğinde, haritadaki her anahtar için
.bg-primary,.bg-successve.bg-dangergibi sınıflar oluşturulur.
@while ile yineleme
@while koşul doğru olduğu sürece döngüye devam eder.
Sözdizimi
1/*
2@while <condition> {
3 ...
4}
5*/Örnek
Örneğin, yazı tipini adım adım büyütmek istiyorsanız, aşağıdaki gibi yazabilirsiniz:.
1$i: 1;
2
3@while $i <= 5 {
4 .font-#{$i} {
5 font-size: #{$i}rem;
6 }
7 $i: $i + 1;
8}- Yazı tipi boyutlarını adım adım artırmak için
@whiledirektifini yinelemeli işlem için kullanabilirsiniz. $i değişkenini kullanarak, 1'den 5'e kadar olan değerler için sınıflar otomatik olarak oluşturulur.
Oluşturulan CSS
1.font-1 {
2 font-size: 1rem;
3}
4.font-2 {
5 font-size: 2rem;
6}
7.font-3 {
8 font-size: 3rem;
9}
10.font-4 {
11 font-size: 4rem;
12}
13.font-5 {
14 font-size: 5rem;
15}- SASS dosyası CSS'ye derlendiğinde, 1rem'den 5rem'e kadar artan yazı tipi boyutuna sahip sınıflar otomatik olarak oluşturulur.
Gelişmiş Örnek: Yineleme ve İç İçe Geçmeyi Birleştirme
Yinelemeyi SASS'ın iç içe geçme özelliğiyle birleştirerek daha gelişmiş stil üretimi elde edebilirsiniz.
Örnek
Aşağıda, butonlar için arka plan ve üzerine gelindiğindeki renklerin birlikte tanımlandığı bir örnek vardır.
1@use "sass:color";
2
3$colors: (
4 primary: #3498db,
5 success: #2ecc71,
6 danger: #e74c3c
7);
8
9@each $name, $hex in $colors {
10 .btn-#{$name} {
11 background-color: $hex;
12 color: white;
13
14 &:hover {
15 background-color: color.scale($hex, $lightness: -10%);
16 }
17 }
18}- Yineleme ve SASS iç içe yazımını birleştirerek, buton arka plan renklerini ve üzerine gelindiğindeki renkleri bir seferde oluşturabilirsiniz. Haritadaki her bir renk için bir
.btn-sınıfı oluşturulur ve:hoverstili iç içe yazım kullanılarak tanımlanır.
Oluşturulan CSS
1.btn-primary {
2 background-color: #3498db;
3 color: white;
4}
5.btn-primary:hover {
6 background-color: #2980b9;
7}
8.btn-success {
9 background-color: #2ecc71;
10 color: white;
11}
12.btn-success:hover {
13 background-color: #27ae60;
14}
15.btn-danger {
16 background-color: #e74c3c;
17 color: white;
18}
19.btn-danger:hover {
20 background-color: #c0392b;
21}- SASS dosyasını CSS'ye dönüştürdüğünüzde, her buton için arka plan rengi ve üzerine gelindiğindeki (hover) renk otomatik olarak oluşturulur ve :hover stilleri iç içe geçirme (nesting) kullanılarak topluca tanımlanır.
Yineleme Kullanırken Dikkat Edilmesi Gerekenler
Daha verimli ve okunabilir kod yazmak için yineleme kullanırken aşağıdakilere dikkat edin.
-
Çok fazla derin iç içe geçmeden kaçının Aşırı iç içe geçme okunabilirliği azaltır, bu yüzden minimumda tutun.
-
Performans etkilerini göz önünde bulundurun Yineleme ile çok fazla sınıf oluşturulursa, CSS'iniz gereksiz yere büyük hale gelebilir.
-
Uygun değişken adları kullanın
$iveya$itemgibi değişkenlerde, daha anlamlı isimler kullanarak kodunuzu daha anlaşılır yapabilirsiniz.
Özet
SASS'ta yinelemeden yararlanmak, verimli ve sürdürülebilir stil tasarımlarına olanak tanır. Özellikle, @for, @each ve @while arasında seçim yaparak dinamik ve esnek CSS üretebilirsiniz.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.