İçeriğe geç

Flexbox mı Grid mi — Telefonda Sayfa Neden Yana Kayıyor?

Başlangıç 9 dk Çok sık karşılaşılır

Önce şunu oku: Tarayıcı Nasıl Çizer — Animasyon Neden Takılıyor?

30 saniyede özet

Flexbox öğeleri tek yönde dizer, grid satır ve sütunu birlikte kurar. Flex öğeleri varsayılan olarak içeriklerinden küçük olamaz; tek satıra sığmayınca sayfa yana kayar. Doğru seçim, hangi yönde düzen istediğine bağlı.

Masaüstünde beş hesap kartı yan yana, tertemiz duruyor. Aynı sayfayı telefonda açınca parmağın sayfayı yana itiyor ve kartların yarısı ekranın dışında kalıyor. Bunu düzeltmek için önce kartları kimin dizdiğini anlamak gerekiyor.

  1. Bayt: Kartları flex ile yan yana dizdim. Masaüstünde harika.

  2. Sen: Telefonda nasıl?

  3. Bayt: Sayfa yana kayıyor! flex: 1 demiştim, küçülmeleri gerekmiyor muydu?

  4. Bayt: Küçülürler, ama bir sınıra kadar. O sınırı birlikte bulalım.

Bir yön mü, iki yön mü?

flexboxÖğeleri tek yönde (satır ya da sütun) dizen CSS düzeni. Öğeler büyüyüp küçülebilir; ama varsayılan olarak içeriklerinden küçük olamazlar.Sözlükte gör → öğeleri tek bir yönde dizer: ya yan yana ya da alt alta. Bir düğme satırı, bir menü, bir kartın içindeki ikon ve yazı flexbox’ın işidir.

CSS gridSatır ve sütunu birlikte kuran iki boyutlu CSS düzeni. Sütunlar bir kez tanımlanır, bütün öğeler aynı ızgaraya oturur.Sözlükte gör → satırları ve sütunları birlikte kurar. Bir kart galerisi ya da sayfanın ana iskeleti gibi iki boyutlu düzenlerde parlar.

Kafam karıştı, daha basit anlat

Bir sıra diziyorsan flex, satır ve sütundan oluşan bir ızgara kuruyorsan grid.

Hızlı kontrolBaşlangıç

Bir ikonla yazıyı yan yana dizmek için hangisi daha uygundur?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Bir kart galerisinde hem satırların hem sütunların hizalı olmasını istiyorsun. Hangisi?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Flex öğesi neden küçülmüyor?

Beş kart display: flex ile tek satırda, her biri flex: 1. Her kartın içeriği en az 200px istiyor. 320px'lik bir telefonda ne olur? Cevabı göster

Sayfa yana kayar. flex: 1 kartlara küçülme izni verir, ama flex öğelerinin varsayılan min-width değeri auto’dur: içeriklerinden küçük olamazlar. Beş kart ve aradaki boşluklar 1064px eder.

Bir raf mı, gözlü bir dolap mı?
Adım adım oku
  1. flex tek satırda: kartlar içeriklerinden küçülmez, sığmayan ekranın dışına taşar.
  2. flex-wrap: sığmayan alt satıra geçer; kısa son satırdaki kartlar boşluğu doldurmak için genişler.
  3. grid: sütunlar bir kez belirlenir, bütün kartlar aynı genişlikte; artan hücre boş kalır.
  4. Tek yönde dizmek flex'in, satır ve sütun birlikte grid'in işi.

min-width: 0 yazarsan taşma durur ama kartlar içeriklerinden dar kalır ve yazılar ezilir. Çoğu zaman asıl çözüm, kartları alt satıra geçirmektir.

Kafam karıştı, daha basit anlat

Flex öğesi içeriğinden küçülmez. Sığmıyorsa ya alt satıra geçir ya da küçülmesine bilerek izin ver.

Hızlı kontrolOrta

Flex öğelerinin varsayılan min-width değeri nedir ve ne anlama gelir?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Tek satırlık bir flex kapsayıcıda kartlar telefonda ekrandan taşıyor. Hangisi taşmayı durdurur ama kartları içeriklerinden dar bırakır?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Sarmak mı, ızgara mı?

flex-wrap: wrap sığmayan kartı alt satıra geçirir. Ama her satırı ayrı ayrı doldurur: tablette üst satırda üç, alt satırda iki kart varsa alttakiler daha geniş olur.

Grid’de repeat(auto-fit, minmax(200px, 1fr)) sütun sayısını ekrana bırakır ve bütün kartları aynı genişlikte tutar. Kısa son satırda yalnızca boş bir hücre kalır.

Kafam karıştı, daha basit anlat

flex-wrap her satırı kendi başına doldurur. Grid bütün satırlara aynı sütunları verir.

Hızlı kontrolOrta

flex-wrap: wrap ile tablette üstte üç, altta iki kart var; kartlar flex: 1 1 200px. Alttaki kartlar neden daha geniş?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Kendin gör

Beş kart, bir kutu

Tohum 552205
.list { display: flex; gap: 16px }  .card { flex: 1 }

Oynat ya da adımla.

Hız
Adım 0

Şu an ne oldu?

flex, tek satır

.list { display: flex; gap: 16px } .card { flex: 1 }

Görevler0/3

  • Telefon ekranında sayfayı yana kaydıraçık

    İpucu

    Varsayılan ayarlar yeter.

  • Son satırdaki kartı ötekilerden geniş yapaçık

    İpucu

    Satırlar oluşsun, ama her satır kendi başına dolsun.

  • Tablette kartları satırlara böl ama hepsi aynı genişlikte kalsınaçık

    İpucu

    Sütunları bir kez belirleyen düzen hangisi?

Olay günlüğü (0)

Henüz olay yok. Oynat veya adımla.

  1. Varsayılanla oynat. Telefonda tek satır: 1064px’lik içerik 320px’lik ekrana sığmadı.
  2. “min-width: 0” seç. Taşma bitti ama kartlar ezildi.
  3. flex-wrap’e geç, ekranı tablet yap. Alt satırdaki iki kart daha geniş.
  4. grid’e geç. Bütün kartlar aynı genişlikte, bir hücre boş.
  5. Masaüstünü dene. Dört düzen de tek satıra sığdı.
Hızlı kontrolOrta

grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)) ne yapar?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Tuzaklar

İç içe flex. Bir flex öğesinin içinde uzun, bölünmeyen bir yazı varsa (bir ayar adı, bir link) o öğe de küçülmez. Kapsayan öğeye min-width: 0, yazıya overflow-wrap: anywhere gerekir.

Her şeyi grid yapmak. Bir ikon ve bir yazıyı yan yana koymak için grid kurmak gereksizdir. Tek sıra flex’in işidir.

Sabit genişlik. Kartlara width: 300px yazmak, 320px’lik ekranda kenar boşluklarıyla birlikte taşar. Sabit yerine en az ve en çok sınır ver.

Kafam karıştı, daha basit anlat

Uzun yazılara bölünme izni ver, tek sıra için grid kurma, sabit genişlik yerine sınır kullan.

Hızlı kontrolOrta

Bir flex satırında kısa bir başlık ve uzun, boşluksuz bir IBAN var. Telefonda satır taşıyor. En doğru düzeltme hangisi?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Aşağıdaki örnek bir bankacılık uygulamasının hesaplar ekranından: kart galerisi grid, kartın içi flex.

Derinleş · Hesap kartları: dışı grid, içi flex 3 dosya · ~45 satır · ilk okumada atlayabilirsin
Proje dosyaları

src/features/accounts/ accounts.css Galeri: sütun sayısını ekran belirliyor, kartlar hep aynı genişlikte.

src/features/accounts/accounts.css
/* Outside: a gallery — rows and columns together. */
.account-grid {
display: grid;
gap: 1rem;
grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
}

src/features/accounts/ account-card.css Kartın içi: ikon, ad ve bakiye tek sırada; uzun IBAN bölünebiliyor.

src/features/accounts/account-card.css
/* Inside: one row — icon, name, balance. */
.account-card {
display: flex;
align-items: center;
gap: 0.75rem;
}
.account-card__text {
min-width: 0; /* let this item shrink below its content */
}
.account-card__iban {
overflow-wrap: anywhere; /* a 26-character IBAN may break on a phone */
}
.account-card__balance {
margin-left: auto; /* push the balance to the right edge */
white-space: nowrap;
}

src/features/accounts/ AccountGrid.tsx React tarafı: yalnızca doğru sınıfları veriyor, genişlik hesabı yok.

src/features/accounts/AccountGrid.tsx
interface AccountGridProps {
accounts: readonly Account[];
}
export function AccountGrid({ accounts }: AccountGridProps) {
return (
<ul className="account-grid">
{accounts.map((account) => (
<li key={account.iban} className="account-card">
<AccountIcon kind={account.kind} />
<div className="account-card__text">
<p>{account.name}</p>
<p className="account-card__iban">{account.iban}</p>
</div>
<p className="account-card__balance">{formatMoney(account.balance)}</p>
</li>
))}
</ul>
);
}

Kendini sına

Şimşek turu1/4

flex: 1 verilen bir öğe, içeriğinden de küçük olacak kadar daralabilir.

Soru 1/3İleri

Kartlara width: 300px yazıldı, sayfa kenarlarında 16px iç boşluk var. 320px'lik telefonda ne olur?

Cevabı biliyor musun?Önce birini seç. Tekrar zamanlaması buna göre ayarlanıyor.

Aklında kalacak üç şey

  1. 1 Flexbox tek yönde dizer: bir satır ya da bir sütun. Grid satırı ve sütunu birlikte kurar; bütün hücreler aynı ızgaraya oturur.
  2. 2 Flex öğelerinin varsayılan min-width değeri auto'dur: içeriklerinden küçülmezler. Tek satıra sığmayan kartlar sayfayı yana kaydırır.
  3. 3 Sığmayan kartlar için iki yol var: flex-wrap ile alt satıra geçirmek ya da grid'de repeat(auto-fit, minmax(…)) ile sütun sayısını ekrana bırakmak.
Sonraki kapı Fareyle her şey çalışıyor. Peki yalnızca Tab tuşu ve bir ekran okuyucuyla para gönderilebiliyor mu? Erişilebilirlik Temelleri — Gözü Kapalı Para Gönderebilir misin? · 9 dk

4 kart sonraki derste seni bekliyor

0/4 kart bu dersten toplandı