Html & Css İle Özelleştirilebilir Bir İçecek Sipariş Menüsü Nasıl Yapılır?

Html & Css İle Özelleştirilebilir Bir İçecek Sipariş Menüsü Nasıl Yapılır?
Html & Css İle Özelleştirilebilir Bir İçecek Sipariş Menüsü Nasıl Yapılır?

Gereksinimler ve Ön Hazırlık

Projeye başlamadan önce modern bir tarayıcı (Chrome, Firefox veya Edge) ve bir kod editörü (VS Code önerilir) yeterlidir. 2026 yılı itibarıyla tüm tarayıcılar güncel CSS özelliklerini desteklediği için ekstra bir kütüphaneye ihtiyaç duymadan saf HTML ve CSS ile çalışacağız.

  • Modern bir kod editörü (VS Code).
  • Tarayıcı geliştirici araçlarını (DevTools) kullanma alışkanlığı.
  • Temel HTML5 semantik etiket bilgisi.
  • CSS Flexbox ve Grid mantığına dair temel aşinalık.

Adım 1: İçecek Menüsü İçin HTML Yapısını Kurma

Semantik HTML, arama motorlarının içeriğinizi daha iyi anlamasını sağlar. Menü öğelerimizi kapsayıcı bir main etiketi içinde, her bir içeceği ise article etiketi ile tanımlayacağız.


  


İçecek Menümüz

Filtre Kahve

Taze çekilmiş çekirdeklerden.

45 TL Sepete Ekle

Burada section etiketi, menü öğelerini gruplamak için kullanılırken, article bağımsız içeriği temsil eder. Bu yapı, ileride veritabanından veri çekerken döngü kurmanızı kolaylaştıracaktır.

Adım 2: CSS ile Modern Arayüz Tasarımı

Görsel çekiciliği artırmak için CSS Grid kullanarak öğeleri düzenli bir ızgara yapısına oturtacağız. Bu yöntem, ekran genişliğine göre otomatik olarak sütun sayısını ayarlamamıza olanak tanır.

.menu-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 20px;
  padding: 20px;
}

.menu-item {
  border: 1px solid #ddd;
  padding: 15px;
  border-radius: 8px;
  text-align: center;
  transition: transform 0.3s ease;
}

.menu-item:hover {
  transform: translateY(-5px);
  box-shadow: 0 4px 15px rgba(0,0,0,0.1);
}

transition özelliği, kullanıcı fareyi üzerine getirdiğinde yumuşak bir animasyon efekti oluşturur. auto-fit kullanımı, ekran küçüldüğünde kartların alt alta dizilmesini sağlar.

Adım 3: Özelleştirme Seçenekleri ve Kontroller

Kullanıcıların içeceklerini özelleştirebilmesi için (örneğin: şeker miktarı, süt seçimi) select ve input etiketlerini kullanacağız. Bu, form verilerinin sunucuya doğru iletilmesi için kritiktir.

Şeker: Şekersiz Az Şekerli Bol Şekerli

Bu alanlar, kullanıcının tercihini belirlemesine yardımcı olur. Form elemanlarında id ve name niteliklerinin benzersiz olması, ileride JavaScript veya bir backend dili ile veri işlerken hata almamanızı sağlar.

Adım 4: Tasarım Yöntemlerinin Karşılaştırması

Aşağıdaki tablo, farklı düzenleme yöntemlerinin avantaj ve dezavantajlarını özetlemektedir.

Yöntem Avantaj Dezavantaj
Flexbox Tek boyutlu hizalama için mükemmel Karmaşık ızgaralarda yetersiz
CSS Grid İki boyutlu (satır/sütun) kontrol Eski tarayıcılarda uyum sorunu
Float Eski sistemlerle tam uyum Bakımı çok zor, güncelliğini yitirdi

Adım 5: Güvenlik ve Performans İpuçları

Kullanıcıdan veri alırken her zaman dikkatli olunmalıdır. İstemci tarafında yapılan doğrulamalar (HTML5 required gibi) sadece kullanıcı deneyimi içindir; gerçek güvenlik sunucu tarafında sağlanmalıdır.

Uyarı: Kullanıcı girdilerini asla doğrudan veritabanına göndermeyin. XSS (Cross-Site Scripting) saldırılarını engellemek için her zaman çıktıları temizleyin (sanitize) ve sunucu tarafında doğrulama yapın.

/* Güvenli bir buton tasarımı */
button {
  background-color: #28a745;
  color: white;
  border: none;
  padding: 10px 20px;
  cursor: pointer;
  border-radius: 4px;
}

button:disabled {
  background-color: #ccc;
}

Butonları etkisiz hale getirme (disabled) özelliği, mükerrer siparişleri önlemek için kullanılabilir. Bu küçük dokunuşlar, uygulamanızın profesyonel görünmesini sağlar.

Sıkça Sorulan Sorular

CSS Grid her tarayıcıda çalışır mı?

2026 yılı itibarıyla, kullanılan tüm modern tarayıcılar CSS Grid'i tam desteklemektedir. Internet Explorer gibi çok eski tarayıcılar için "autoprefixer" gibi araçlar kullanabilirsiniz.

Mobil uyumluluğu nasıl test ederim?

Tarayıcınızda F12 tuşuna basıp "Toggle Device Toolbar" ikonuna tıklayarak farklı cihaz boyutlarını simüle edebilirsiniz.

Neden Flexbox yerine Grid tercih etmeliyim?

Menü kartları gibi hem yatay hem dikey hizalanması gereken yapılar için Grid çok daha temiz bir kod yapısı sunar.

Veritabanı bağlantısı nasıl kurulur?

Bu makale arayüz odaklıdır. Veritabanı işlemleri için PHP, Node.js veya Python gibi bir backend dili kullanarak form verilerini güvenli bir şekilde işlemeniz gerekir.

Görselleri nasıl optimize ederim?

WebP formatını kullanın ve görsellerinizi sunucuya yüklemeden önce boyutlarını optimize edin. Bu, sayfa yüklenme hızını ciddi oranda artırır.

Sorumluluk Reddi: Bu rehber, web arayüz tasarımı üzerine eğitici bilgiler içerir. Sunucu tarafı kodlama, veritabanı yönetimi ve ödeme sistemleri gibi kritik alanlarda güvenlik uzmanlarının tavsiyelerine başvurulması önerilir.

İleri Seviye İpuçları: CSS Değişkenleri ile Dinamik Temalandırma

Menünüzü daha yönetilebilir kılmak için CSS değişkenlerini (Custom Properties) kullanmak, tasarımın sürdürülebilirliğini artırır. Özellikle "Koyu Mod" veya "Kurumsal Renkler" gibi seçenekleri tek bir noktadan değiştirmek, kod tekrarını önler.

:root {
  --primary-color: #6f4e37;
  --secondary-color: #f4f1ea;
  --text-color: #333;
  --card-shadow: 0 4px 6px rgba(0,0,0,0.1);
}

.menu-card {
  background-color: var(--secondary-color);
  color: var(--text-color);
  box-shadow: var(--card-shadow);
  border-left: 5px solid var(--primary-color);
}

Bu yaklaşım, menüdeki tüm kartların renk paletini tek bir satır değişikliğiyle güncellemenize olanak tanır. Ayrıca, calc() fonksiyonunu kullanarak dinamik boşluklar oluşturabilir ve ekran boyutuna göre ölçeklenen tasarımlar elde edebilirsiniz.

Dağıtım (Deployment) Öncesi Performans ve Hata Ayıklama

Menünüzü canlıya almadan önce tarayıcı geliştirici araçlarını (DevTools) kullanarak performans darboğazlarını tespit etmelisiniz. Özellikle "Lighthouse" sekmesi, menünüzün mobil hızını ve erişilebilirlik puanını ölçmek için en iyi araçtır.

Yaygın Hata Ayıklama Yöntemleri

  • CSS Çakışmaları: Eğer stilleriniz beklediğiniz gibi görünmüyorsa, !important kullanmak yerine seçici özgüllüğünü (specificity) artırın.
  • Düzen Kayması (Layout Shift): Görsellerinize mutlaka width ve height değerlerini HTML tarafında tanımlayın. Bu, sayfa yüklenirken içeriklerin kaymasını engeller.
  • Erişilebilirlik (A11y): Menüdeki tüm interaktif öğelerin tabindex değerlerini kontrol edin. Klavyeyle gezinme desteği, profesyonel bir arayüz için zorunludur.

Aşağıdaki örnekte, menü öğelerinin klavye ile odaklandığında görsel geri bildirim vermesini sağlayan CSS kodunu inceleyebilirsiniz:

.menu-item:focus-within {
  outline: 2px solid var(--primary-color);
  transform: scale(1.02);
  transition: transform 0.2s ease;
}

button:focus {
  background-color: #5a3d2a;
  color: #fff;
}

Bu küçük dokunuşlar, kullanıcı deneyimini iyileştirir ve menünüzün sadece görsel olarak değil, teknik olarak da yüksek standartlara sahip olmasını sağlar. Dağıtım aşamasında CSS dosyalarınızı küçültmeyi (minification) unutmayın; bu işlem dosya boyutunu küçülterek sunucu yanıt süresini optimize edecektir.

Sonuç

Bu rehberde, HTML ve CSS kullanarak profesyonel bir içecek sipariş menüsünün temellerini atmış olduk. Semantik etiketler, Grid düzeni ve modern CSS teknikleri ile hem görsel olarak şık hem de işlevsel bir yapı kurduk. Bir sonraki adımda, bu menüye JavaScript ekleyerek sepete ürün ekleme ve fiyat hesaplama gibi dinamik özellikleri dahil edebilirsiniz. Başarılar dilerim.

Bu yazıya tepkinizi paylaşın:
Kerem Tekin

Hobi ve kişisel gelişim alanında içerik editörlüğü yapıyorum. Okuyuculara yeni beceriler kazandıran, net ve anlaşılır nasıl yapılır makaleleri yazıyorum.

Yorumlar (0)

Yorum Yaz