CSS · 6/8
Mobil uyumlu tasarım (media query)
Mobil öncelikli bir yerleşimi ekran genişliğine göre geliştirmek.
Önerilen çalışma: 25–45 dakika; örnekleri kendin uygula. Süre kişiye göre değişir.
Bu sayfada · 9 başlık
Başlamadan önce
Önceki dersteki örneği çalıştırmış olman ve dosya/çıktı ayrımını biliyor olman yararlı.
Öğrenme sırası: konuyu oku → çıktıyı tahmin et → örneği değiştir → alıştırmayı çöz → cevabını gerekçelendir.

Videoyla adım adım izle
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.
Konu anlatımı
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.
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.
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.
İlk örneği oku ve dene
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.
<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.
Adım adım neden böyle çalışıyor?
- Temel kurallar dar ekran için tek sütun kurar.
- min-width:700px daha geniş alan için ek düzeni açar.
- minmax(0,1fr) ızgara öğelerinin içerik yüzünden gereksiz büyümesini azaltır.
- Viewport meta satırı HTML belgesinde ayrıca bulunmalıdır.
İkinci çözümlü örnek
Mobil öncelikli bir yerleşimi ekran genişliğine göre geliştirmek.
<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>
▶ Sonuç
700px altında tek, daha genişte iki sütun.
Kolaydan zora sen dene
- Önce yalnızca tek sütunlu sürümü kur.
- Alan yeterli olduğunda iki sütuna geçiren min-width koşulu ekle.
- 320px, 700px ve 1000px genişliklerde, ardından yakınlaştırmayla dene.
İpucunu aç
Eşik değeri pencerenin CSS pikseli cinsinden genişliğini kontrol eder; fiziksel piksel sayısını değil.
Üç görevin açıklamalı çözümünü oku
- Temel düzen tek sütundur ve geniş ekran koşuluna bağımlı değildir.
- min-width koşulu alan yeterli olunca ek sütunu açar.
- Tek bir hazır telefon profiliyle yetinme; ara genişlik ve yakınlaştırmayı da dene.
Bir çözüm varyasyonu gör
Çözüm varyasyonu
Önce kendi görevlerini dene. Bu varyasyonda girdi ve sonuçları karşılaştır.
<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>
▶ Sonuç
600px genişliğe kadar tek, sonrasında iki sütun.
Yaygın hata ve çözümü
- Viewport eklemek tek başına sabit genişlikli düzeni düzeltmez; esnek ölçüler de gerekir.
- Mobilde önemli içeriği display:none ile yok etmek yerine düzeni iyileştir.
Kendini değerlendir
Ezberlemeden açıklayabiliyor musun?
Mobil öncelikli tasarımda temel CSS hangi görünümü kurar?
Açıklamalı yanıt
Dar ekran için çalışan temel görünümü; geniş ekran düzeni koşullarla eklenir.
Kendi çözümünde bir girdiyi değiştir. Çalıştırmadan önce beklenen sonucu yaz; gerçek sonuçla karşılaştır ve fark varsa hangi satırdan kaynaklandığını açıkla.
Kaynak ve çalışma ortamı
Örnekler küçük öğretim senaryolarıdır. Java/C#/PHP/Swift çalışma ortamını kendi cihazında ayrıca doğrula; yazılı sonuçlar beklenen davranışı açıklar.
Resmî dil belgeleriBu içerik işine yaradı mı?
Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.