Gereksinimler ve Ön Hazırlık
Bu projeye başlamadan önce bilgisayarınızda modern bir kod editörü (VS Code gibi) ve güncel bir tarayıcı (Chrome, Firefox veya Edge) yüklü olmalıdır. Tasarım sürecinde "Flexbox" ve "CSS Grid" gibi modern yerleşim modellerini kullanacağız. Eski tarayıcı desteklerini (IE gibi) düşünmenize gerek yoktur; 2026 yılı itibarıyla tüm modern tarayıcılar bu özellikleri tam desteklemektedir.
Çalışma ortamınızı hazırlamak için bir klasör oluşturun ve içine index.html ile style.css dosyalarını ekleyin. Kodlarınızı yazarken temiz bir yapı kurmak, ileride yapacağınız güncellemelerde hata ayıklama sürecini kolaylaştıracaktır.
Adım 1: Temel Html Yapısını Oluşturma
Sabit bir yan menü için öncelikle Html iskeletini kurmamız gerekir. Burada kullanacağımız nav etiketi, arama motorları için anlamsal (semantic) bir yapı sunar. Menü içeriğini bir liste yapısı içinde tutmak, hem erişilebilirlik hem de stil yönetimi açısından en doğru yöntemdir.
Bu yapıda, sidebar sınıfına sahip olan menü alanımız ve content sınıfına sahip içerik alanımız bulunmaktadır. Bu iki öğeyi yan yana getirmek için CSS tarafında düzenlemeler yapacağız.
Adım 2: Css ile Sabitleme (Position Fixed)
Menünün sayfada sabit kalmasını sağlayan temel CSS özelliği position: fixed değeridir. Bu özellik, öğeyi normal akıştan çıkarır ve tarayıcı penceresine göre konumlandırır. top: 0 ve left: 0 değerleri ile menüyü sol üst köşeye sabitliyoruz.
.sidebar {
position: fixed;
top: 0;
left: 0;
width: 250px;
height: 100vh; /* Ekran yüksekliğinin tamamı */
background-color: #2c3e50;
color: white;
padding-top: 20px;
}
.content {
margin-left: 250px; /* Menü genişliği kadar boşluk */
padding: 20px;
}
Burada 100vh kullanımı, menünün her zaman ekran yüksekliğinde olmasını sağlar. content kısmına verdiğimiz margin-left değeri, menünün içeriğin üzerine binmesini engellemek için kritik bir öneme sahiptir.
Adım 3: Esnek Yerleşim (Flexbox) Kullanımı
Modern tasarımlarda menü içindeki öğeleri hizalamak için Flexbox tercih edilir. Menü içindeki listeyi dikey olarak ortalamak veya öğeler arasında boşluk bırakmak için display: flex özelliğini kullanacağız.
.sidebar ul {
list-style: none;
padding: 0;
display: flex;
flex-direction: column;
}
.sidebar a {
display: block;
padding: 15px 20px;
color: #ecf0f1;
text-decoration: none;
transition: background 0.3s;
}
.sidebar a:hover {
background-color: #34495e;
}
transition özelliği, üzerine gelindiğinde oluşan renk değişiminin yumuşak bir geçişle gerçekleşmesini sağlar. Bu, kullanıcı arayüzünde "mikro etkileşim" olarak adlandırılan ve kullanıcıyı memnun eden bir detaydır.
Adım 4: Responsive Tasarım ve Güvenlik
Sabit menülerin mobil cihazlarda ekranı tamamen kaplamaması gerekir. Medya sorguları (Media Queries) kullanarak ekran genişliği azaldığında menünün davranışını değiştirmeliyiz. Ayrıca, web sayfalarınızda dışarıdan gelen verileri veya link yapılarını yönetirken XSS (Cross-Site Scripting) saldırılarına karşı her zaman dikkatli olmalısınız.
@media (max-width: 768px) {
.sidebar {
width: 100%;
height: auto;
position: relative;
}
.content {
margin-left: 0;
}
}
Güvenlik Uyarısı: Kullanıcıdan alınan verileri menü içeriği olarak dinamik bir şekilde (örneğin veritabanından çekerek) basıyorsanız, mutlaka Html etiketlerini temizleyin. Aksi takdirde, zararlı scriptler çalıştırılabilir. Sunucu tarafında her zaman "sanitize" işlemi uygulayın.
Sabit Yan Menü Yöntemlerinin Karşılaştırılması
| Yöntem | Avantaj | Dezavantaj |
|---|---|---|
| Position Fixed | Basit, hızlı, her tarayıcıda çalışır. | İçerikle çakışma riski vardır. |
| Position Sticky | İçerikle birlikte akabilir, esnektir. | Eski tarayıcılarda desteklenmeyebilir. |
| Flexbox | Hizalama kolaylığı sağlar. | Karmaşık yapılarda dikkat gerektirir. |
Sıkça Sorulan Sorular
Sabit yan menü neden içeriğin üzerine biniyor?
Bu genellikle position: fixed kullanıldığında, öğenin normal akıştan çıkmasından kaynaklanır. İçerik kutusuna, menü genişliği kadar margin-left veya padding-left vererek bu sorunu çözebilirsiniz.
Mobilde menüyü nasıl gizleyebilirim?
Medya sorguları içinde display: none kullanarak menüyü gizleyebilir ve bir "hamburger menü" butonu ile JavaScript kullanarak görünür hale getirebilirsiniz.
Sticky ile Fixed arasındaki fark nedir?
Fixed öğeyi tarayıcıya sabitler, Sticky ise öğe belirli bir noktaya gelene kadar normal akışta kalır, o noktadan sonra sabitlenir.
Menü yüksekliğini ekranın tamamına nasıl yayarım?
height: 100vh değerini kullanarak tarayıcı penceresinin dikey yüksekliğinin %100'ünü kullanabilirsiniz.
İçerik menüden uzunsa ne olur?
Menüye overflow-y: auto ekleyerek, menü içeriği ekrana sığmadığında otomatik olarak kaydırma çubuğu çıkmasını sağlayabilirsiniz.
Sorumluluk Reddi: Bu rehberdeki kod örnekleri eğitim amaçlıdır. Üretim ortamında (production) kullanırken, CSS dosyalarınızı optimize etmeyi, minification (küçültme) işlemlerini yapmayı ve tarayıcı uyumluluğunu test etmeyi unutmayın.
İleri Seviye İpuçları: Menüye Dinamik Geçiş Efektleri Ekleme
Sabit yan menünüzü daha profesyonel bir görünüme kavuşturmak için CSS geçişlerini (transitions) kullanabilirsiniz. Kullanıcı menü üzerine geldiğinde (hover) veya menü genişlediğinde yumuşak bir geçiş sağlamak, kullanıcı deneyimini (UX) doğrudan iyileştirir.
.sidebar {
width: 250px;
transition: width 0.3s ease-in-out;
}
.sidebar:hover {
width: 280px;
}
Bu basit geçiş efekti, menünün statik görünümünü kırarak daha etkileşimli bir arayüz sunmanıza olanak tanır. Ayrıca, menü içerisindeki bağlantıların (link) üzerine gelindiğinde arka plan rengini değiştirmek için :hover seçicisini kullanmayı ihmal etmeyin.
Hata Ayıklama ve Tarayıcı Uyumluluğu (Debugging)
Sabit yan menü tasarlarken karşılaşılan en yaygın sorunlardan biri, menünün z-index çakışmaları nedeniyle diğer öğelerin arkasında kalmasıdır. Eğer menünüz görünmüyorsa veya tıklanamıyorsa şu kontrol listesini uygulayın:
- Z-Index Kontrolü: Menünüzün
position: fixedveyaabsoluteolduğundan vez-indexdeğerinin içerik alanından yüksek olduğundan emin olun. - Taşma (Overflow) Sorunları: Ana kapsayıcıda (container)
overflow: hiddenkullanılması, sabit menünün dışarı taşmasına engel olabilir. - Görünürlük Testi: Tarayıcı geliştirici araçlarını (F12) kullanarak menünün kapladığı alanı "Inspect" (İncele) ile görselleştirin.
Aşağıdaki CSS bloğu, menünüzün her zaman en üstte kalmasını sağlamak için kullanılan standart bir yöntemdir:
.sidebar {
position: fixed;
top: 0;
left: 0;
height: 100%;
z-index: 9999; /* İçeriğin üzerinde kalmasını sağlar */
background-color: #333;
}
Performans ve Optimizasyon
Sabit menüler, sayfa her kaydırıldığında tarayıcı tarafından yeniden hesaplanabilir. Performansı artırmak için will-change özelliğini kullanarak tarayıcının bu öğeyi önceden optimize etmesini sağlayabilirsiniz. Ancak bu özelliği aşırı kullanmaktan kaçınmalısınız.
.sidebar {
will-change: transform;
}
Ayrıca, menü içerisinde çok fazla görsel veya ağır ikon kütüphaneleri kullanıyorsanız, bunları SVG formatında tutmak hem sayfa yüklenme hızını artıracak hem de yüksek çözünürlüklü ekranlarda (Retina) net bir görüntü sağlayacaktır.
Profesyonel İpucu: Eğer menünüzde çok sayıda bağlantı varsa, nav etiketini kullanarak semantik bir yapı kurun. Bu, arama motorlarının (SEO) sayfa yapınızı daha iyi anlamasına yardımcı olur.
Sonuç
Html ve Css kullanarak sabit yan menü tasarımı yapmak, web geliştirme sürecinde temel ama oldukça etkili bir beceridir. Bu rehberde öğrendiğiniz position: fixed mantığı, Flexbox ile hizalama ve medya sorguları ile responsive tasarım teknikleri, neredeyse tüm web projelerinizde işinize yarayacaktır. Bir sonraki adım olarak, bu menüye JavaScript ekleyerek açılır-kapanır (toggle) özellikler kazandırmayı deneyebilirsiniz.


Yorumlar (0)
Yorum Yaz