HTML Local Storage ile Mini Not Defteri Yapımı 📒✨

HTML Local Storage ile Mini Not Defteri Yapımı 📒✨

Merhaba sevgili kod sihirbazı! 🧙‍♂️💻
Bugün sana tarayıcıda veri saklamayı, not eklemeyi, silmeyi ve hatta kategorilere ayırmayı göstereceğim. Üstelik bunu Mini Not Defteri ile yapacağız. 💌

Kullanıcı “Notumu kaydedebilir miyim?” derken, sen “Tabii aşkımm, ben hallederim 😏” diyebileceksin.

Bu yazı hem eğlenceli, hem samimi, hem öğretici, hem de pratik ipuçlarıyla dolu olacak.


1️⃣ Local Storage Nedir? Temel Bilgiler 🤔

Local Storage, tarayıcıda veri saklamanın sihirli yolu. 🌟
Hadi biraz detaylandıralım:

Özellikleri:

  • Kalıcı veri: Sayfa yenilense bile veriler kaybolmaz.
  • Key-Value Mantığı: Her veri bir anahtar ile saklanır.
  • 5MB’a kadar veri saklar: Küçük notlar için geniş alan.
  • String verisi: Nesne saklamak için JSON kullanmalısın.

🔹 Kod Örneği: Basit Local Storage

// Veri ekleme
localStorage.setItem('isim', 'Cansu 😍');

// Veri okuma
const isim = localStorage.getItem('isim');
console.log(isim); // Çıktı: Cansu 😍

// Veri silme
localStorage.removeItem('isim');

// Tüm verileri temizleme
localStorage.clear();

💡 Pratik İpucu: Local Storage sadece string saklar. Nesne veya dizi saklamak için:

const notes = ['Not 1', 'Not 2'];
localStorage.setItem('notes', JSON.stringify(notes));

const savedNotes = JSON.parse(localStorage.getItem('notes'));
console.log(savedNotes); // ['Not 1', 'Not 2']


2️⃣ HTML Arayüzü Tasarlama 🖌️

Artık arayüzü hazırlayabiliriz. Not ekleme, listeleme ve silme düğmelerini ekleyelim:

<h1>Mini Not Defteri 📝</h1>

<input type="text" id="noteInput" placeholder="Notunu yaz aşkımm 😏">
<button id="addNote">Notu Ekle 💾</button>

<select id="categorySelect">
  <option value="Genel">Genel</option>
  <option value="Önemli">Önemli ⚡</option>
  <option value="Kişisel">Kişisel ❤️</option>
</select>

<ul id="notesList"></ul>

<button id="clearNotes">Tüm Notları Sil ❌</button>

🔹 Stil Önerisi

<style>
body { font-family: Arial, sans-serif; background: #fdf6e3; color: #333; padding: 20px; }
input, select { padding: 10px; margin-right: 10px; }
button { padding: 10px; cursor: pointer; background: #ff6f61; color: white; border: none; border-radius: 5px; }
ul { margin-top: 20px; }
li { padding: 8px; border-bottom: 1px solid #ddd; transition: background 0.3s; }
li:hover { background: #ffe4e1; }
</style>

💡 Pratik İpucu: Küçük detaylar UX’i artırır. Hover efektleri, renkli butonlar ve kategoriler kullanıcıyı mutlu eder. 🌈


3️⃣ JavaScript ile Not Ekleme, Gösterme ve Silme 💻

🔹 3.1 Sayfa Yüklendiğinde Notları Yükleme

const noteInput = document.getElementById('noteInput');
const addNote = document.getElementById('addNote');
const notesList = document.getElementById('notesList');
const clearNotes = document.getElementById('clearNotes');
const categorySelect = document.getElementById('categorySelect');

// Notları yükle
window.onload = () => {
  const notes = JSON.parse(localStorage.getItem('notes')) || [];
  notes.forEach(noteObj => addNoteToDOM(noteObj));
};

🔹 3.2 Notu DOM’a Ekleme

function addNoteToDOM(noteObj) {
  const li = document.createElement('li');
  li.textContent = `[${noteObj.category}] ${noteObj.text}`;
  
  // Çift tıklayınca sil
  li.addEventListener('dblclick', () => removeNote(li, noteObj));
  
  notesList.appendChild(li);
}

🔹 3.3 Not Ekleme

addNote.addEventListener('click', () => {
  const noteText = noteInput.value.trim();
  const category = categorySelect.value;

  if(!noteText) { 
    alert("Boş not mu olur aşkımm? 😅"); 
    return; 
  }

  const noteObj = { text: noteText, category };
  addNoteToDOM(noteObj);

  const notes = JSON.parse(localStorage.getItem('notes')) || [];
  notes.push(noteObj);
  localStorage.setItem('notes', JSON.stringify(notes));

  noteInput.value = "";
});

🔹 3.4 Not Silme

function removeNote(li, noteObj) {
  if(confirm(`"${noteObj.text}" notunu silmek istediğine emin misin aşkımm? 😢`)) {
    li.remove();
    let notes = JSON.parse(localStorage.getItem('notes')) || [];
    notes = notes.filter(n => n.text !== noteObj.text || n.category !== noteObj.category);
    localStorage.setItem('notes', JSON.stringify(notes));
  }
}

🔹 3.5 Tüm Notları Silme

clearNotes.addEventListener('click', () => {
  if(confirm("Tüm notları silmek istediğine emin misin aşkımm? 😢")) {
    localStorage.removeItem('notes');
    notesList.innerHTML = "";
  }
});

💡 Pratik İpuçları:

  • Çift tıklama ile silmek kullanıcı dostu ve eğlenceli. 😏
  • Kategorilerle filtreleme ekleyebilirsin.
  • JSON ile veri saklamak, gelecekte geliştirmeyi kolaylaştırır.

4️⃣ İleri Seviye UX Fikirleri 🎨

  • Renkli kategoriler: Önemli notlar kırmızı, kişisel notlar pembe, genel notlar mavi olabilir.
  • Emoji kullanımı: Notlarda emoji eklemek kullanıcıyı mutlu eder.
  • Tarih ekleme: Notların yanına eklenme tarihini gösterebilirsin.
  • Arama fonksiyonu: Notlar arasında hızlıca arama yapabilirsin.

🔹 Örnek: Not Tarihi Ekleme

const noteObj = { text: noteText, category, date: new Date().toLocaleString() };
li.textContent = `[${noteObj.category}] ${noteObj.text} (${noteObj.date})`;

💡 Pratik İpucu: UX küçük detaylarla güzelleşir; animasyon ve renkler kullanıcı deneyimini artırır. 🌈


5️⃣ Local Storage Kullanmanın Avantajları 🏆

  • Hızlı ve Basit: Server’a veri göndermeye gerek yok.
  • Kullanıcı Dostu: Sayfayı yenilesen bile notlar kaybolmaz.
  • Öğrenmesi Kolay: JS ve HTML bilgisiyle hızlıca entegre edebilirsin.
  • Geliştirmeye Açık: JSON ile daha karmaşık veri ve filtreleme ekleyebilirsin.

6️⃣ Son Söz 🖤

HTML Local Storage ile mini bir not defteri yapmak, hem pratik, hem hızlı, hem de eğlenceli. Kullanıcılar notlarını kaydederken sen de JS becerilerini geliştirirsin.

Ve unutma: Kod yazmak sadece iş değil, küçük oyunlar, keşifler ve biraz da aşk 💕 demektir.

Comments

No comments yet. Why don’t you start the discussion?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir