İçeriğe geç
Yazılım Dilleri

CSS nedir? Renk, kutu modeli ve mobil tasarım dersleri

Web sayfalarının görünüşünü belirler: renkler, yazı tipleri, boşluklar ve yerleşim. HTML sayfanın iskeletiyse CSS onun kıyafetidir. Bir programlama dili değil, bir stil dilidir.

Webino App Ekibi Son güncelleme:
Bu sayfada · 23 başlık

CSS Hakkında Bilmen Gereken 5 Temel Soru

Ne İçin Kullanılır?

HTML ile oluşturulan iskelete renk, yazı tipi, görsel düzen (Flexbox, Grid), animasyon ve mobil uyumlu (responsive) tasarım kazandırmak için kullanılır.

Neler Yapılır?

Modern web arayüzleri, karanlık/aydınlık tema geçişleri, mobil uyumlu menüler, akıcı buton animasyonları ve profesyonel tasarım sistemleri yapılır.

Nerede Kullanılır?

Tüm web sitelerinde, hibrit mobil uygulamalarda ve Electron tabanlı masaüstü programlarında kullanılır.

Nasıl & Nerede Çalıştırılır?

VS Code vb. editörlerde `.css` dosyası olarak yazılır, HTML içine `<link>` ile bağlanır ve web tarayıcısında anında çalışır; derleyici gerektirmez.

Neden Önemlidir?

Kullanıcı deneyimini belirleyen yegane görsel dildir; iyi tasarlanmamış bir site ne kadar iyi kodlanırsa kodlansın kullanıcı güveni kazanamaz.

CSS ne için kullanılır?

Renkleri ve yazı tiplerini belirlemek

Boşlukları ve kutuların boyutunu ayarlamak

Öğeleri yan yana veya ızgara hâlinde dizmek

Sayfayı telefona ve bilgisayara uyumlu yapmak

CSS hakkında kısaca

CSS, 1994 yılında Håkon Wium Lie tarafından önerildi ve ilk sürümü 1996'da yayınlandı. Öncesinde sayfaların görünüşü HTML'in içine karışık şekilde yazılıyordu; CSS içerik ile görünüşü birbirinden ayırdı. Bugün Flexbox, Grid ve animasyonlar gibi çok güçlü özellikleri var.

Artıları

  • Tek bir dosyayı değiştirerek bütün sitenin görünüşünü değiştirebilirsin.
  • Sonucu anında görürsün; öğrenmesi eğlencelidir.
  • Animasyon ve mobil uyumlu tasarım için JavaScript gerekmez.

Eksileri

  • Kuralları kolay ama büyük projelerde düzenli tutmak zorlaşabilir.
  • Bazı yeni özellikler eski tarayıcılarda farklı görünebilir.

Bilgisayarına nasıl kurulur?

Sayfadaki "Kendin dene" alanları için kurulum gerekmez. Kendi bilgisayarında çalışmak istediğinde bu adımları izle.

  1. 1

    Kurulum gerekmez! CSS, HTML ile birlikte tarayıcıda çalışır.

  2. 2

    Projende style.css adında bir dosya oluştur ve HTML dosyanın <head> kısmına şu satırı ekle:

    HTML
    <link rel="stylesheet" href="style.css">
  3. 3

    style.css dosyasına ilk kuralını yaz, kaydet ve sayfayı yenile:

    CSS
    body {
      background-color: lightyellow;
    }
  4. 4

    Tarayıcıda sayfaya sağ tıklayıp İncele (Inspect) dersen, her öğenin CSS'ini görebilir ve canlı olarak değiştirebilirsin.

Örneklerle adım adım öğren

Her derste kısa bir açıklama, kod ve kodun ekrana ne yazdığını göreceksin. " Kendin dene" ile kodu hemen değiştirip çalıştırabilirsin.

CSS Nerede ve Hangi Uygulamayla Çalıştırılır? (Kurulum ve Ayarlar)

CSS tek başına çalıştırılan bir program değil, bir HTML sayfasına bağlanarak tarayıcı tarafından çizilen görsel tasarım dilidir. VS Code ve tarayıcı geliştirici araçlarıyla (F12) kullanılır.

CSS Kurarken Yapılması Gereken Kritik Ayarlar

  • ✓

    1. style.css Dosyasını HTML’e Bağlama (<link>)

    CSS dosyasının çalışması için HTML dosyasının <head> bölümüne mutlaka <link rel="stylesheet" href="style.css"> satırını eklemelisin. Dosya yolu yanlışsa stiller uygulanmaz.

  • ✓

    2. Kutu Modeli Sıfırlaması (box-sizing: border-box)

    Her CSS dosyasının en üstüne * { box-sizing: border-box; margin: 0; padding: 0; } kuralını ekleyerek tarayıcıların varsayılan boşluk farklarını sıfırla.

  • ✓

    3. VS Code "HTML CSS Support" ve "IntelliSense" Eklentisi

    Sınıf adlarını (class) ve CSS özelliklerini otomatik tamamlaması için VS Code’da "HTML CSS Support" eklentisini kur.

CSS kurulum ayarları, eklentiler ve ilk çalıştırma ekranı şeması
CSS için önerilen kurulum onay kutuları, eklentiler ve ilk çalıştırma komutu özeti.
VS Code üzerinde HTML ve CSS dosyalarını yan yana düzenleme ekranı
VS Code üzerinde HTML ve CSS dosyalarını yan yana düzenleme ekranı.

İlk CSS Kodunu Çalıştırma Komutları:

CSS Kurulum & Çalıştırma
<!-- 1. index.html içinde <head> bölümüne ekle: -->
<link rel="stylesheet" href="style.css">

/* 2. style.css içine yaz ve kaydet: */
* { box-sizing: border-box; }
body {
  font-family: system-ui, sans-serif;
  background: #f8fafc;
  color: #0f172a;
}
1

İlk CSS kuralın

Bir CSS kuralında önce hangi öğeyi seçtiğini (h1), sonra süslü parantez içinde özelliği ve değerini (color: tomato;) yazarsın. Bu derslerde CSS'i <style> etiketinin içine yazıyoruz.

CSS
<style>
  h1 {
    color: tomato;
    font-size: 40px;
  }
</style>

<h1>Merhaba CSS!</h1>

▶ Sonuç

Domates kırmızısı renkte, büyük bir "Merhaba CSS!" başlığı görünür.

Bu konuyu uygulayarak öğren

Bir CSS kuralının seçici, özellik ve değerini ayırt ederek uygulamak.

CSS, HTML ağacındaki öğelere görünüm kuralları uygular. Kuralın başındaki seçici hangi öğelerin etkileneceğini belirtir; süslü parantez içindeki bildirimler neyin değişeceğini söyler. color bir özelliktir, tomato onun bir değeridir. Aynı öğeye birden fazla kural uygulanabildiği için tarayıcı uygun değerleri kaskad kurallarıyla seçer.

CSS · İlk CSS kuralın — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

İlk CSS kuralın

Bir CSS kuralının seçici, özellik ve değerini ayırt ederek uygulamak.

Kavramı kur

CSS, HTML ağacındaki öğelere görünüm kuralları uygular. Kuralın başındaki seçici hangi öğelerin etkileneceğini belirtir; süslü parantez içindeki bildirimler neyin değişeceğini söyler. color bir özelliktir, tomato onun bir değeridir. Aynı öğeye birden fazla kural uygulanabildiği için tarayıcı uygun değerleri kaskad kurallarıyla seçer.

Neden böyle çalışıyor?

İlk örneklerde style etiketi kullanmak tek dosyada deneme yapmayı kolaylaştırır. Proje büyüyünce kuralları ayrı bir CSS dosyasına ayırabilirsin. Her değişiklikte hem HTML hem CSS dosyasını kaydet; tarayıcıda doğru dosyayı açtığını kontrol et. Yüklenmeyen bir dosya ile eşleşmeyen bir seçici birbirinden farklı hatalardır.

Çalışma sırası

Bir özelliği değiştirmeden önce hangi sonucu beklediğini yaz. Sonra yalnızca o özelliği değiştir ve farkı gözlemle. Aynı anda renk, boyut, boşluk ve yerleşimi değiştirmek hangi kuralın ne yaptığını anlamanı zorlaştırır. Geliştirici araçlarının Styles ve Computed bölümleri hangi bildirimin gerçekten uygulandığını gösterir.

İkinci örnek · 1

h2 seçicisi sayfadaki bütün h2 öğelerini seçer. Kodun tamamı yazılı derste bulunur.

Kod

<style>
  h2 { color: #245f9e; font-size: 28px; }
  p { color: #334155; line-height: 1.7; }
</style>
<h2>Bugünkü hedefim</h2>
<p>Bir CSS kuralını açıklayabiliyorum.</p>

Beklenen sonucu oku

Süslü parantezlerin eksikliği sonraki kuralların da yanlış yorumlanmasına yol açabilir.

Beklenen çıktı: Mavi bir h2 ve rahat satır aralığına sahip koyu paragraf.

Bir değeri sen değiştir

Başlığın yalnızca rengini değiştir; sonucu tahmin et. İkinci bir h2 ekle; ikisinin de neden etkilendiğini anlat.

Hata nereden gelir?

CSS dosyası yüklenmiyorsa link href yolunu Network bölümünde denetle.

Kendi çözümünü kur

Aynı başlığa ikinci bir color kuralı ekle; DevTools ile hangisinin kazandığını incele. Aynı özgüllük ve koşullarda daha sonra yazılan bildirim kazanabilir; üstü çizilmiş bildirime bak.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

<style>
h2 { color: #a33b31; }
p { font-size: 18px; line-height: 1.8; }
</style>
<h2>Deneme başlığı</h2><p>Okunabilir bir paragraf.</p>

Kendini kontrol et

color ve background-color aynı şeyi mi değiştirir? Yanıt: Hayır; color metnin, background-color öğenin arka planının rengini belirler.

Beklenen çıktı: Kırmızımsı başlık ve 18px paragraf.

Ayrıntılı ders, alıştırmalar ve çözümler
Yazı rengini hangi özellik değiştirir?

2

Sınıflar (class) ile seçmek

Aynı türdeki öğelerden sadece bazılarını biçimlendirmek için onlara bir sınıf (class) verirsin. CSS'te sınıflar başına nokta konularak seçilir: .uyari.

CSS
<style>
  .uyari {
    background-color: #fff3cd;
    color: #8a6d3b;
    padding: 12px;
  }
</style>

<p>Normal bir paragraf.</p>
<p class="uyari">Dikkat: bu bir uyarı mesajı!</p>

▶ Sonuç

Birinci paragraf normal görünür; ikincisi açık sarı zeminli, kahverengi yazılı bir uyarı kutusu olur.

Bu konuyu uygulayarak öğren

Tekrar kullanılabilir sınıflarla öğeleri seçmek ve kaskadı okumak.

Bir sınıf HTML’de bir veya birden fazla öğeye verilen yeniden kullanılabilir bir addır. class="uyari" öğeyi adlandırır; .uyari seçicisi o adı taşıyanları bulur. Başındaki nokta CSS sözdiziminin parçasıdır, HTML class değerine yazılmaz. Aynı öğeye boşlukla ayrılmış birden fazla sınıf verebilirsin.

CSS · Sınıflar (class) ile seçmek — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Sınıflar (class) ile seçmek

Tekrar kullanılabilir sınıflarla öğeleri seçmek ve kaskadı okumak.

Kavramı kur

Bir sınıf HTML’de bir veya birden fazla öğeye verilen yeniden kullanılabilir bir addır. class="uyari" öğeyi adlandırır; .uyari seçicisi o adı taşıyanları bulur. Başındaki nokta CSS sözdiziminin parçasıdır, HTML class değerine yazılmaz. Aynı öğeye boşlukla ayrılmış birden fazla sınıf verebilirsin.

Neden böyle çalışıyor?

Sınıf adını öğenin o anki rengine göre değil görevine göre seçmek değişiklikleri kolaylaştırır. “kirmizi” yerine “uyari” demek, rengi değişse bile anlamı korur. Bir kuralı birden fazla öğede kullanmak kopya CSS miktarını azaltır; bu da ileride tutarsız tasarımları önler.

Çalışma sırası

Tarayıcı bir öğeye eşleşen kuralları birlikte değerlendirir. Bir sınıf kuralı ile genel etiket kuralı çakıştığında özgüllük önem kazanır. İlk aşamada karmaşık seçiciler yerine basit sınıflarla çalış; DevTools’ta hangi bildirimin geçersiz kaldığını görerek kaskadı öğren.

İkinci örnek · 1

class özelliğine nokta yazılmaz; CSS seçicisinde nokta bulunur. Kodun tamamı yazılı derste bulunur.

Kod

<style>
.kart { padding: 16px; border: 1px solid #cbd5e1; }
.uyari { background: #fff3cd; color: #704b00; }
</style>
<p class="kart">Normal not</p>
<p class="kart uyari">Kaydetmeden çıkma.</p>

Beklenen sonucu oku

Seçici yazımında büyük/küçük harf ve tireleri tutarlı kullan.

Beklenen çıktı: İki kartta aynı boşluk ve kenarlık; yalnızca ikinci kartta uyarı renkleri.

Bir değeri sen değiştir

Üç paragraf ekle; yalnızca birine uyari ver. Bir öğede kart ve uyari sınıflarını birlikte kullan.

Hata nereden gelir?

class=".uyari" yazmak CSS .uyari seçicisiyle amaçladığın adı oluşturmaz; HTML’de noktasız yaz.

Kendi çözümünü kur

.kart.uyari ve .kart .uyari seçicilerinin hangi HTML yapılarında çalıştığını ayrı örneklerle dene. İki seçici arasındaki boşluk “içinde bulunan” ilişkisi kurar.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

<style>.not{padding:12px}.onemli{border-left:3px solid #2563eb}</style>
<p class="not">Birinci not</p><p class="not onemli">İkinci not</p>

Kendini kontrol et

.kart .uyari neyi seçer? Yanıt: kart sınıflı öğenin içinde bulunan uyari sınıflı öğeleri; iki sınıfı aynı öğede aramaz.

Beklenen çıktı: İki notun boşluğu eşit; ikinci notun sol kenarlığı var.

Ayrıntılı ders, alıştırmalar ve çözümler
class="kart" olan öğeyi nasıl seçersin?

3

Renkler ve yazı tipleri

Renkler isimle (tomato), onaltılık kodla (#333333) ya da rgb() ile yazılabilir. font-family yazı tipini, font-size yazı boyutunu, line-height satır aralığını belirler.

CSS
<style>
  body {
    font-family: Arial, sans-serif;
    background-color: #f0f4ff;
  }
  p {
    color: #333333;
    font-size: 18px;
    line-height: 1.6;
  }
  strong {
    color: rgb(99, 102, 241);
  }
</style>

<p>CSS ile <strong>renkleri</strong> ve yazı tiplerini değiştirebilirsin.</p>

▶ Sonuç

Açık mavi zemin üzerinde Arial yazı tipiyle koyu gri bir paragraf; "renkleri" kelimesi mor ve kalın görünür.

Bu konuyu uygulayarak öğren

Renk, yazı boyutu ve satır aralığını okunabilir bir bütün olarak düzenlemek.

Tipografi sadece bir yazı tipi seçmek değildir. Metnin boyutu, satır aralığı, kalınlığı ve satır uzunluğu birlikte okunabilirliği etkiler. Uzun bir paragraf için fazla küçük yazı kullanmak veya bütün metni kalın yapmak gözün önemli bilgiyi ayırmasını zorlaştırır. Önce gövde metnini rahat okunur yap, sonra başlık ölçeğini belirle.

CSS · Renkler ve yazı tipleri — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Renkler ve yazı tipleri

Renk, yazı boyutu ve satır aralığını okunabilir bir bütün olarak düzenlemek.

Kavramı kur

Tipografi sadece bir yazı tipi seçmek değildir. Metnin boyutu, satır aralığı, kalınlığı ve satır uzunluğu birlikte okunabilirliği etkiler. Uzun bir paragraf için fazla küçük yazı kullanmak veya bütün metni kalın yapmak gözün önemli bilgiyi ayırmasını zorlaştırır. Önce gövde metnini rahat okunur yap, sonra başlık ölçeğini belirle.

Neden böyle çalışıyor?

font-family bir tercih sırası belirtir. İlk yazı tipi yoksa tarayıcı sıradakini dener; sans-serif gibi genel aile bu zincirin sonunda güvenli bir dönüş yoludur. rem kök yazı boyutuna göre ölçeklenir. line-height değerini birimsiz yazmak, alt öğelerin farklı boyutlarında orantılı satır aralığı kurulmasına yardımcı olur.

Çalışma sırası

Renk seçerken yalnızca beğeniye bakma. Yazı ile zemin arasında yeterli kontrast, bağlantıların ayırt edilebilirliği ve hata bilgisinin renk dışında da anlatılması önemlidir. Tasarımı küçük ekranda, yakınlaştırılmış görünümde ve farklı ışık koşullarını düşünerek değerlendir.

İkinci örnek · 1

font-family listedeki ilk kullanılabilir yazı tipini seçer. Kodun tamamı yazılı derste bulunur.

Kod

<style>
body { font-family: system-ui, sans-serif; color: #182131; }
p { font-size: 1.125rem; line-height: 1.8; max-width: 65ch; }
a { color: #245f9e; text-decoration: underline; }
</style>
<p>Rahat okunabilen metin, genişlik ve boşlukla birlikte tasarlanır. <a href="#hedef">Kaynağı incele</a>.</p>

Beklenen sonucu oku

max-width:65ch uzun paragrafın satırını yaklaşık karakter genişliğiyle sınırlar.

Beklenen çıktı: Okunabilir boyutta, sınırlı satır genişliğinde metin ve altı çizili bağlantı.

Bir değeri sen değiştir

Aynı paragrafı 1rem ve 1.25rem ile karşılaştır. Satır aralığını 1.1 ve 1.8 yap; okumadaki farkı not et.

Hata nereden gelir?

Açık gri metni beyaz zeminde çok soluk bırakmak okunabilirliği düşürür; kontrastı ölç.

Kendi çözümünü kur

Tarayıcıyı yüzde 200 yakınlaştır; içerik kaybolmadan okunabiliyor mu? Yakınlaştırma metni büyütür; yerleşimin sabit yüksekliklerle kesilmediğini kontrol et.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

<style>.metin{font:1.1rem/1.8 system-ui,sans-serif;max-width:60ch;color:#1e293b}</style>
<p class="metin">Bir paragrafın tasarımı, sözcükler kadar onları çevreleyen boşluklarla da ilgilidir.</p>

Kendini kontrol et

font-family listesinin sonuna sans-serif yazmak ne sağlar? Yanıt: Özel yazı tipleri kullanılamadığında genel bir yazı ailesine geri dönüş sağlar.

Beklenen çıktı: Sistem yazı tipiyle koyu renkli, rahat satır aralıklı bir paragraf.

Ayrıntılı ders, alıştırmalar ve çözümler
Yazı boyutunu hangi özellik ayarlar?

4

Kutu modeli: padding, border, margin

Sayfadaki her öğe bir kutudur. padding içerik ile kenarlık arasındaki iç boşluk, border kenarlık, margin kutunun dışındaki boşluktur. Bunları bir tablodaki resim, paspartu ve çerçeve gibi düşünebilirsin.

CSS
<style>
  .kutu {
    width: 200px;
    padding: 20px;
    border: 3px solid #6366f1;
    margin: 30px;
    background-color: #eef2ff;
  }
</style>

<div class="kutu">Ben bir kutuyum</div>

▶ Sonuç

Kenarlardan 30 piksel içeride, mor kenarlıklı, içi açık mor ve yazısı kenarlardan 20 piksel uzakta duran bir kutu görünür.

Bu konuyu uygulayarak öğren

Kutu modelini hesaplamak ve taşmayı nedenine göre çözmek.

Her CSS kutusunda içerik alanı, padding, border ve dıştaki margin bulunur. Varsayılan content-box modelinde width yalnızca içerik genişliğidir. Bu nedenle 200px genişlik, iki tarafta 20px padding ve 3px border toplamda 246px yer kaplar; margin bu kutunun dışına ayrıca eklenir.

CSS · Kutu modeli: padding, border, margin — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Kutu modeli: padding, border, margin

Kutu modelini hesaplamak ve taşmayı nedenine göre çözmek.

Kavramı kur

Her CSS kutusunda içerik alanı, padding, border ve dıştaki margin bulunur. Varsayılan content-box modelinde width yalnızca içerik genişliğidir. Bu nedenle 200px genişlik, iki tarafta 20px padding ve 3px border toplamda 246px yer kaplar; margin bu kutunun dışına ayrıca eklenir.

Neden böyle çalışıyor?

box-sizing:border-box genişlik hesabına padding ve border değerlerini dahil eder. Böylece width:200px dediğinde kutunun dış kenarlığına kadar olan genişliği 200px tutabilirsin. Margin hâlâ dışarıdadır. Bu kural bir kutuyu otomatik olarak mobil uyumlu yapmaz; verilen genişliğin kapsayıcıya sığması da gerekir.

Çalışma sırası

Taşma gördüğünde sayfaya overflow:hidden ekleyip belirtisini gizleme. DevTools kutu modelinde genişliği, padding değerlerini ve üst kapsayıcıyı incele. Uzun bölünemeyen metin, sabit min-width veya flex öğesinin minimum boyutu da taşmaya neden olabilir; sorunu gerçek kaynağında düzelt.

İkinci örnek · 1

content-box içerik genişliğine padding ve border ekler. Kodun tamamı yazılı derste bulunur.

Kod

<style>
* { box-sizing: border-box; }
.kart { width: 240px; max-width: 100%; padding: 20px;
  border: 4px solid #2563eb; margin: 12px 0; }
</style>
<div class="kart">Dış genişliğim en fazla 240px.</div>

Beklenen sonucu oku

max-width:100% kutunun kapsayıcısından geniş olmasını sınırlamaya yardım eder.

Beklenen çıktı: Padding ve kenarlığıyla birlikte en fazla 240px genişliğinde bir kutu.

Bir değeri sen değiştir

width:200px; padding:20px; border:3px için content-box toplamını hesapla. Aynı kutuyu border-box yapıp ölçümü karşılaştır.

Hata nereden gelir?

Padding ile margin aynı yere boşluk koymaz; DevTools renkli kutu gösterimini incele.

Kendi çözümünü kur

Kapsayıcıyı 180px genişliğe getir; max-width kuralının etkisini incele. İki yatay taraf vardır: genişliğe sağ ve sol padding ile sağ ve sol border eklenir.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

<style>*{box-sizing:border-box}.kutu{width:200px;max-width:100%;padding:20px;border:3px solid #245f9e}</style>
<div class="kutu">Toplam genişlik: 200px.</div>

Kendini kontrol et

200px content-box + iki yanda 20px padding + 3px border kaç piksel eder? Yanıt: 246px; margin hesabın dışında ayrıca yer kaplar.

Beklenen çıktı: border-box sayesinde 200px dış genişlik; iç alan 154px.

Ayrıntılı ders, alıştırmalar ve çözümler
İç boşluk hangisidir?

5

Flexbox ile yan yana dizmek

display: flex içindeki öğeleri yan yana dizer. gap aralarındaki boşluğu, justify-content: center ortalamayı sağlar. border-radius köşeleri yuvarlar.

CSS
<style>
  .menu {
    display: flex;
    gap: 12px;
    justify-content: center;
  }
  .menu a {
    background-color: #6366f1;
    color: white;
    padding: 8px 16px;
    border-radius: 999px;
    text-decoration: none;
  }
</style>

<nav class="menu">
  <a href="#">Ana Sayfa</a>
  <a href="#">Diller</a>
  <a href="#">Araçlar</a>
</nav>

▶ Sonuç

Ortada yan yana duran, yuvarlak köşeli üç mor menü butonu görünür.

Bu konuyu uygulayarak öğren

Flexbox ile bir satırın hizasını ve dar ekranda sarılmasını yönetmek.

Flexbox, bir kapsayıcının doğrudan çocuklarını tek ana eksen üzerinde düzenler. display:flex verdiğin öğe kapsayıcıdır; onun çocukları flex öğeleri olur. Ana eksen varsayılan olarak yataydır. justify-content ana eksen boyunca dağılımı, align-items ona dik eksende hizalamayı kontrol eder.

CSS · Flexbox ile yan yana dizmek — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Flexbox ile yan yana dizmek

Flexbox ile bir satırın hizasını ve dar ekranda sarılmasını yönetmek.

Kavramı kur

Flexbox, bir kapsayıcının doğrudan çocuklarını tek ana eksen üzerinde düzenler. display:flex verdiğin öğe kapsayıcıdır; onun çocukları flex öğeleri olur. Ana eksen varsayılan olarak yataydır. justify-content ana eksen boyunca dağılımı, align-items ona dik eksende hizalamayı kontrol eder.

Neden böyle çalışıyor?

Birden çok kartı yan yana dizdiğinde toplam genişlik dar ekrana sığmayabilir. flex-wrap:wrap yeni satıra geçmeye izin verir; gap öğeler arasındaki düzenli boşluğu oluşturur. Her öğeye ayrı margin yazmak yerine kapsayıcıda gap kullanmak ilk ve son öğe boşluklarını daha anlaşılır yönetir.

Çalışma sırası

Bir satırda uzun metin olması, beklemediğin minimum genişlikler doğurabilir. Flex öğelerinde min-width:0 veya uzun kelimeler için uygun kırılma kuralı gerekebilir. Önce hangi öğenin genişlediğini ölç; sonra sadece o öğeyi düzelt. Her kutuya rastgele width vermek esnek yerleşimin amacını bozar.

İkinci örnek · 1

display:flex yalnızca doğrudan çocukların yerleşimini düzenler. Kodun tamamı yazılı derste bulunur.

Kod

<style>
.satir { display:flex; flex-wrap:wrap; gap:12px; align-items:center; }
.kart { flex:1 1 160px; min-width:0; padding:16px; background:#eef2ff; }
</style>
<div class="satir"><div class="kart">HTML</div><div class="kart">CSS</div><div class="kart">JavaScript</div></div>

Beklenen sonucu oku

align-items:center farklı yükseklikte öğeleri çapraz eksende ortalar.

Beklenen çıktı: Geniş ekranda yan yana, dar ekranda saran üç kart.

Bir değeri sen değiştir

Üç kartı yan yana diz ve aralarına gap ekle. Bir kartın metnini uzat; align-items değerlerini karşılaştır.

Hata nereden gelir?

flex kuralını kapsayıcı yerine çocuklara veya tersine koymak beklenen etkiyi vermez; görevleri ayır.

Kendi çözümünü kur

Ekranı daralt; flex-wrap kapalıyken ve açıkken farkı gözlemle. flex:1 1 160px esneme, küçülme ve başlangıç boyutunu tek kuralda belirtir.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

<style>.grup{display:flex;flex-wrap:wrap;gap:10px}.oge{flex:1 1 140px;min-width:0;padding:14px;background:#e0f2fe}</style>
<div class="grup"><div class="oge">Bir</div><div class="oge">İki</div></div>

Kendini kontrol et

justify-content varsayılan yatay flex düzeninde hangi ekseni yönetir? Yanıt: Ana ekseni, yani varsayılan düzende yatay dağılımı yönetir.

Beklenen çıktı: İki esnek öğe; alan azaldığında yeni satıra geçebilir.

Ayrıntılı ders, alıştırmalar ve çözümler
Flexbox nasıl etkinleştirilir?

6

Mobil uyumlu tasarım (media query)

@media kuralları sadece belirli ekran boyutlarında çalışır. Böylece aynı sayfa telefonda farklı, bilgisayarda farklı görünebilir. Bu siteyi telefondan açınca menünün değişmesinin sebebi de budur.

CSS
<style>
  .kart {
    padding: 20px;
    background-color: #dcfce7;
  }
  /* Ekran 600 piksel veya daha darsa (telefon) */
  @media (max-width: 600px) {
    .kart {
      background-color: #fee2e2;
      font-size: 14px;
    }
  }
</style>

<div class="kart">Ekran daralınca rengim değişir!</div>

▶ Sonuç

Geniş ekranda yeşil zeminli bir kutu görünür; ekran 600 piksel veya daha darsa kutu kırmızımsı olur ve yazı küçülür.

Bu konuyu uygulayarak öğren

Mobil öncelikli bir yerleşimi ekran genişliğine göre geliştirmek.

Mobil uyumluluk bir cihaz adı listesi değildir. İçeriğin farklı genişliklerde okunabilmesi ve kullanılabilmesidir. Önce dar ekran için tek sütunlu, rahat bir düzen kur. Daha geniş alan oluştuğunda gerekli yerleri çok sütuna çıkar. Bu yaklaşım temel içeriğin küçük ekranda unutulmasını önler.

CSS · Mobil uyumlu tasarım (media query) — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Mobil uyumlu tasarım (media query)

Mobil öncelikli bir yerleşimi ekran genişliğine göre geliştirmek.

Kavramı kur

Mobil uyumluluk bir cihaz adı listesi değildir. İçeriğin farklı genişliklerde okunabilmesi ve kullanılabilmesidir. Önce dar ekran için tek sütunlu, rahat bir düzen kur. Daha geniş alan oluştuğunda gerekli yerleri çok sütuna çıkar. Bu yaklaşım temel içeriğin küçük ekranda unutulmasını önler.

Neden böyle çalışıyor?

Media query belirli bir koşul sağlandığında CSS kurallarını etkinleştirir. min-width genişlik eşik değerine ulaştığında; max-width ise belirli genişliğe kadar devreye girer. Eşiklerini telefon marka/modeline değil, içeriğin sıkıştığı noktaya göre seç. Düzenin iki eşik arasında da çalışması gerekir.

Çalışma sırası

Testi yalnızca tarayıcıdaki tek bir hazır telefon ölçüsünde yapma. Pencereyi yavaşça daralt, uzun başlık ekle ve yakınlaştır. Görsellerin kendi kapsayıcısından taşmadığını, düğmelerin tıklanabilir kaldığını ve sıranın değişirken anlamın kaybolmadığını gözlemle.

İkinci örnek · 1

Temel kurallar dar ekran için tek sütun kurar. Kodun tamamı yazılı derste bulunur.

Kod

<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
*{box-sizing:border-box}.liste{display:grid;gap:16px}
@media(min-width:700px){.liste{grid-template-columns:repeat(2,minmax(0,1fr))}}
.kart{padding:20px;background:#eef2ff}
</style>
<div class="liste"><div class="kart">İlk ders</div><div class="kart">İkinci ders</div></div>

Beklenen sonucu oku

Viewport meta satırı HTML belgesinde ayrıca bulunmalıdır.

Beklenen çıktı: 700px altında tek, daha genişte iki sütun.

Bir değeri sen değiştir

Önce yalnızca tek sütunlu sürümü kur. Alan yeterli olduğunda iki sütuna geçiren min-width koşulu ekle.

Hata nereden gelir?

Viewport eklemek tek başına sabit genişlikli düzeni düzeltmez; esnek ölçüler de gerekir.

Kendi çözümünü kur

320px, 700px ve 1000px genişliklerde, ardından yakınlaştırmayla dene. Eşik değeri pencerenin CSS pikseli cinsinden genişliğini kontrol eder; fiziksel piksel sayısını değil.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

<style>.kartlar{display:grid;gap:12px}@media(min-width:600px){.kartlar{grid-template-columns:1fr 1fr}}.kartlar div{padding:16px;background:#e2e8f0}</style>
<div class="kartlar"><div>A</div><div>B</div></div>

Kendini kontrol et

Mobil öncelikli tasarımda temel CSS hangi görünümü kurar? Yanıt: Dar ekran için çalışan temel görünümü; geniş ekran düzeni koşullarla eklenir.

Beklenen çıktı: 600px genişliğe kadar tek, sonrasında iki sütun.

Ayrıntılı ders, alıştırmalar ve çözümler
Dar ekrana özel kural hangi yapıyla yazılır?

7

Hover ve geçiş efektleri

:hover fare öğenin üzerine geldiğinde uygulanacak stilleri belirler. transition değişimin aniden değil, yumuşakça olmasını sağlar.

CSS
<style>
  .buton {
    background-color: #6366f1;
    color: white;
    padding: 12px 24px;
    border: none;
    border-radius: 8px;
    transition: transform 0.2s, background-color 0.2s;
  }
  .buton:hover {
    background-color: #4338ca;
    transform: scale(1.1);
  }
</style>

<button class="buton">Üzerime gel</button>

▶ Sonuç

Mor bir buton görünür; fareyle üzerine gelince koyulaşır ve hafifçe büyür.

Bu konuyu uygulayarak öğren

Kullanıcı etkileşimlerine ölçülü görsel geri bildirim eklemek.

Hover fareyle bir öğenin üzerine gelindiğinde eşleşir. Telefonda kalıcı bir fare işaretçisi olmadığı için önemli bilgi veya işlem yalnızca hover durumunda ortaya çıkmamalıdır. Bir düğmenin normal hâli zaten anlaşılır olmalı; hover yalnızca etkileşimi desteklemelidir. Klavye için focus-visible durumunu ayrıca düşün.

CSS · Hover ve geçiş efektleri — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Hover ve geçiş efektleri

Kullanıcı etkileşimlerine ölçülü görsel geri bildirim eklemek.

Kavramı kur

Hover fareyle bir öğenin üzerine gelindiğinde eşleşir. Telefonda kalıcı bir fare işaretçisi olmadığı için önemli bilgi veya işlem yalnızca hover durumunda ortaya çıkmamalıdır. Bir düğmenin normal hâli zaten anlaşılır olmalı; hover yalnızca etkileşimi desteklemelidir. Klavye için focus-visible durumunu ayrıca düşün.

Neden böyle çalışıyor?

Transition bir özelliğin eski değerden yeni değere geçişini zamana yayar. “all” yazmak beklemediğin özellikleri de hareketlendirebilir; hangi özelliklerin değişeceğini açıkça listelemek daha kontrollüdür. Kısa ve amaçlı bir renk geçişi, her öğenin hareket etmesinden daha yararlı olabilir.

Çalışma sırası

Bazı kullanıcılar cihazlarında hareketi azaltmayı seçer. prefers-reduced-motion koşuluyla zorunlu olmayan hareketi kapat. Animasyonların bilgiye erişim için şart olmaması, tasarımın hareket olmadan da çalışması gerektiğini gösterir. Hareketi işlev yerine dekorasyon olarak kullanıp dikkati dağıtma.

İkinci örnek · 1

hover bir işaretçi durumudur; tek erişim yolu olarak tasarlanmaz. Kodun tamamı yazılı derste bulunur.

Kod

<style>
.dugme{padding:12px 18px;background:#eef2ff;border:1px solid #64748b;transition:background-color .15s}
.dugme:hover{background:#c7d2fe}.dugme:focus-visible{outline:3px solid #245f9e;outline-offset:3px}
@media(prefers-reduced-motion:reduce){.dugme{transition:none}}
</style>
<button class="dugme">Kaydet</button>

Beklenen sonucu oku

prefers-reduced-motion kullanıcı tercihine saygı göstermeyi sağlar.

Beklenen çıktı: Fare üzerine gelince rengi değişen, klavyeyle odaklanınca belirgin çerçevesi olan düğme.

Bir değeri sen değiştir

Yalnızca background-color için kısa geçiş ekle. Fare kullanmadan Tab ile düğmeye ulaş.

Hata nereden gelir?

outline:none verip yerine görünür odak eklememek klavye kullanıcısını kaybettirir.

Kendi çözümünü kur

Hareket azaltma tercihini aç ve geçişin kapandığını doğrula. Önce hareket olmadan anlaşılır düğmeyi kur, sonra geçişi ekle.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

<style>a{color:#245f9e;text-decoration:underline}a:focus-visible{outline:2px solid currentColor;outline-offset:4px}</style>
<a href="#sonuc">Sonuç bölümüne git</a><p id="sonuc">Hedef burası.</p>

Kendini kontrol et

Hover neden tek başına yeterli etkileşim göstergesi değildir? Yanıt: Dokunmatik ve klavye kullanan kişiler hover durumuna aynı şekilde erişmeyebilir.

Beklenen çıktı: Altı çizili ve klavye odağı görünen bağlantı.

Ayrıntılı ders, alıştırmalar ve çözümler
Fare üzerine geldiğinde hangi seçici çalışır?

8

Tailwind CSS: CSS yazmadan tasarım

Tailwind, hazır sınıflardan oluşan bir CSS aracıdır: bg-indigo-500 arka plan rengi, p-6 iç boşluk, rounded-2xl yuvarlak köşe demek. Bu site de Tailwind ile yapıldı. Önce CSS temellerini öğrenmen Tailwind'i anlamanı çok kolaylaştırır.

CSS
<script src="https://cdn.tailwindcss.com"></script>

<div class="m-6 rounded-2xl bg-indigo-500 p-6 text-white shadow-lg">
  <h2 class="text-2xl font-bold">Merhaba Tailwind!</h2>
  <p class="mt-2">Bu kutuyu hiç CSS yazmadan, sadece sınıflarla tasarladım.</p>
</div>

▶ Sonuç

Mor zeminli, yuvarlak köşeli, gölgeli bir kartın içinde beyaz bir başlık ve yazı görünür.

Bu konuyu uygulayarak öğren

Tailwind sınıflarını bildiğin CSS kurallarıyla ilişkilendirmek.

Tailwind bir HTML öğesine küçük yardımcı sınıflar yazarak CSS özelliklerini uygulamana olanak verir. p-4 bir boşluk ölçeğine, flex display özelliğine, rounded bir kenar yuvarlama değerine karşılık gelir. Bu sınıflar HTML’in veya CSS’in yerine başka bir dil koymaz; üretilen stil kurallarını seçmenin bir yoludur.

CSS · Tailwind CSS: CSS yazmadan tasarım — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Tailwind CSS: CSS yazmadan tasarım

Tailwind sınıflarını bildiğin CSS kurallarıyla ilişkilendirmek.

Kavramı kur

Tailwind bir HTML öğesine küçük yardımcı sınıflar yazarak CSS özelliklerini uygulamana olanak verir. p-4 bir boşluk ölçeğine, flex display özelliğine, rounded bir kenar yuvarlama değerine karşılık gelir. Bu sınıflar HTML’in veya CSS’in yerine başka bir dil koymaz; üretilen stil kurallarını seçmenin bir yoludur.

Neden böyle çalışıyor?

Sınıf adını ezberlemekten önce hangi CSS kavramını kullandığını bilmelisin. Esnek yerleşim bilmiyorsan flex yazmak tek başına doğru düzeni sağlamaz. Bir kartın sınıflarını boşluk, tipografi, yüzey ve etkileşim olarak gruplandırarak okumak uzun class metnini daha anlaşılır yapar.

Çalışma sırası

Bu sitedeki bazı eski örnekler öğrenme kolaylığı için tarayıcı CDN yaklaşımı kullanır. Gerçek projede seçtiğin Tailwind sürümünün resmî kurulumunu izle ve gerekli CSS’i derle. Sürümler arasında kurulum ve bazı adlar değişebilir. Bir sınıf uygulanmıyorsa önce derlenmiş CSS’te o kuralın varlığını denetle.

İkinci örnek · 1

Önce normal CSS ile kutunun amacını açıklayabilmelisin. Kodun tamamı yazılı derste bulunur.

Kod

<style>
.kart{padding:16px;border:1px solid #cbd5e1;border-radius:12px}
.baslik{font-size:24px;font-weight:700}
</style>
<article class="kart"><h2 class="baslik">Önce CSS mantığı</h2><p>Bu çalışan örnek Tailwind kurulumu istemez.</p></article>

Beklenen sonucu oku

Kopyalanmış uzun class listesini tek tek gruplara ayırarak incele.

Beklenen çıktı: Yardımcı sınıfların karşılığı anlaşılabilen, normal CSS ile çalışan bir kart.

Bir değeri sen değiştir

padding, border ve font-size kurallarının görevlerini açıkla. Tailwind örneğindeki sınıfları ilgili CSS kavramlarıyla eşleştir.

Hata nereden gelir?

CDN tabanlı öğrenme örneğini üretim için varsayılan tercih sayma; resmî derleme kurulumunu öğren.

Kendi çözümünü kur

Yerel projede resmî kurulumla derleme yap; HTML görünürken CSS yüklenmeyen durumu Network ile ayır. Sınıf metni bir stil dosyası değildir; onu tanımlayan CSS’in sayfada bulunması gerekir.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

<style>.alan{display:flex;gap:12px;padding:16px}.etiket{font-weight:700}</style>
<div class="alan"><span class="etiket">HTML</span><span>İçerik</span></div>

Kendini kontrol et

Tailwind kullanınca CSS kutu modelini öğrenmek gereksiz olur mu? Yanıt: Hayır; yardımcı sınıflar aynı CSS özelliklerini uygular, temel kavramlar yine gereklidir.

Beklenen çıktı: Yan yana yerleşen, aralarında boşluk olan iki metin.

Ayrıntılı ders, alıştırmalar ve çözümler
Tailwind’de p-4 neyi ayarlar?

CSS öğrenirken sık yapılan hatalar

Bunlarla karşılaşırsan panik yapma; herkesin başına gelir.

Noktalı virgülü veya süslü parantezi unutmak

color: red satırının sonundaki ; ya da kapanış } eksikse, ondan sonraki kurallar çalışmaz.

Sınıf seçicisinde noktayı unutmak

HTML'de class="kart" yazdıysan CSS'te .kart diye seçmelisin; başında nokta olmadan kart yazarsan çalışmaz.

Değişikliğin görünmemesi

Tarayıcı eski CSS dosyasını hafızada tutuyor olabilir. Cmd + Shift + R (Windows'ta Ctrl + F5) ile sayfayı tam yenile.

Daha fazlası için Yaygın Yazılım Hataları sayfasına bak.

Sonraki adımlar: öğrenme yol haritası

CSS öğrenmeye devam etmek için bu sırayı izleyebilirsin.

  1. 1

    CSS temelleri

    Bu sayfadaki 8 dersi bitir.

  2. 2

    Flexbox ve Grid

    Sayfa düzeni kurmak için Flexbox'ı ve CSS Grid'i iyice öğren.

  3. 3

    Mobil uyumlu tasarım

    Sitelerini telefon, tablet ve bilgisayarda düzgün görünecek şekilde tasarla.

  4. 4

    Tailwind CSS

    Daha hızlı tasarım için Tailwind gibi bir CSS aracını öğren.

Resmi kaynakMDN: CSS rehberi
Uygulamalı Öğrenme

CSS Bilgini Pekiştir ve Uygulamaya Başla

Yalnızca teoride kalma! CSS için hazırladığımız adım adım 8 interaktif ders, tarayıcıda kod deneme atölyeleri ve seviye tespit sınavıyla kendini hemen geliştir.

Kod oyun alanı

CSS kodunu burada dene

Bir dersin kodunu seç ya da kendi kodunu yaz. Kodu değiştir; sonuç aşağıdaki önizlemede anında güncellenir.

Kodu değiştir ve ▶ Çalıştır butonuna bas.

Sitenin dışında denemek istersen: Bilgisayarında bir .html dosyası oluştur, kodu içine yapıştır ve tarayıcıda aç. İnternette denemek için codepen.io sitesini de kullanabilirsin.

Bitirme projesi: Dar ekrandan büyüyen bir ders kataloğu

HTML tanıtım sayfanı okunabilir ve farklı genişliklerde kullanılabilir bir öğrenme kataloğuna dönüştür. CSS kararlarının her birini bir ihtiyaca bağla.

  1. Ortak yazı, renk ve boşluk değişkenleri tanımla.
  2. Gövde metnini ve başlık ölçeğini kur; uzun satırları sınırla.
  3. border-box ile kutu hesabını tutarlı yap.
  4. Kartları önce tek sütun kur; uygun eşikte iki sütuna çıkar.
  5. Bir menü satırını Flexbox ile hizala; dar ekranda sarılmasını sağla.
  6. Hover yanında focus-visible durumunu tasarla.
  7. Zorunlu olmayan geçişleri hareket azaltma tercihinde kapat.
  8. 320px, 768px, geniş ekran ve yüzde 200 yakınlaştırmada bütün içeriği kontrol et.

Projen bitti mi? Bunları doğrula

Temellerden sonra devam müfredatı

Bu modül başlangıç ve uygulamalı temel sağlar. Aşağıdaki konular ayrı derinleşme alanlarıdır; yalnızca bu sayfayı bitirmek bütün dili bildiğin anlamına gelmez.

  1. CSS Grid ve kapsayıcı sorguları
  2. Kaskad katmanları, özgüllük ve tasarım sistemleri
  3. Erişilebilir kontrast, performans ve üretim derlemesi
Bitirme projesi için referans çözüm

Önce kendi projen üzerinde çalış. Bu küçük başlangıç çözümünü inceleyip görevlerde istenen ek durumlarla geliştir.

CSS

<!doctype html>
<html lang="tr"><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Responsive ders kataloğu</title>
<style>
:root{--zemin:#fff;--yazi:#182131;--cizgi:#dbe1ea;--vurgu:#245f9e}
*{box-sizing:border-box}
body{margin:0;padding:24px;background:var(--zemin);color:var(--yazi);font:1rem/1.8 system-ui}
main{max-width:960px;margin:auto}
h1{font-size:clamp(2rem,5vw,3rem);line-height:1.2}
nav{display:flex;flex-wrap:wrap;gap:16px}
a{color:var(--vurgu);text-underline-offset:4px}
a:focus-visible{outline:3px solid currentColor;outline-offset:4px}
.katalog{display:grid;gap:16px;margin-top:28px}
article{min-width:0;border:1px solid var(--cizgi);border-radius:12px;padding:22px;transition:border-color .15s}
article:hover{border-color:var(--vurgu)}
p{max-width:65ch;overflow-wrap:anywhere}
@media(min-width:650px){.katalog{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){article{transition:none}}
</style>
<main><h1>Öğren, dene, açıkla</h1>
<nav><a href="#html">HTML</a><a href="#css">CSS</a></nav>
<section class="katalog"><article id="html"><h2>HTML</h2><p>İçeriğin yapısını kur.</p></article>
<article id="css"><h2>CSS</h2><p>Okunabilir görünüm ve esnek yerleşim oluştur.</p></article></section>
</main></html>

Tarayıcıda aç. 320px ve 900px genişlikte sütunları, Tab odağını ve yüzde 200 yakınlaştırmayı dene.

Örnek proje dosyalarını indirResmî öğrenme müfredatı

Şimdi sen yap

Bu içerik işine yaradı mı?

Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.