Merhaba Webkolog Takipçileri!
Bugün web sayfalarımızın olmazsa olmazı görsellerle JavaScript aracılığıyla nasıl etkileşim kuracağımızı, yani Image Nesnesini konuşacağız. Bir web sitesinde görselleri dinamik olarak yüklemek, önbelleğe almak, boyutlarını öğrenmek veya kullanıcı etkileşimlerine göre değiştirmek istediğinizde, JavaScript'in Image
nesnesi devreye girer. Bu nesne, HTML'deki <img>
etiketinin JavaScript'teki karşılığıdır ve görselleri tarayıcının hafızasında temsil eder. Hazırsanız, web sayfalarınıza dinamik görsellik katmanın sırlarını öğrenelim!
Image Nesnesi Nedir ve Neden Kullanırız?
JavaScript'teki Image
nesnesi, bir HTML <img>
öğesini temsil eden bir DOM (Belge Nesne Modeli) arayüzüdür. Temelde, JavaScript kullanarak yeni bir görsel oluşturmanıza veya mevcut bir görselin özelliklerine erişmenize olanak tanır. Görseli bir HTML belgesine eklemeden önce bile, JavaScript ile yükleme işlemini başlatabilir, boyutlarını sorgulayabilir veya yükleme durumunu takip edebilirsiniz.
Image nesnesini kullanmanın temel nedenleri:
- Görsel Ön Yükleme (Preloading): Bir kullanıcının bir sayfaya veya bölüme gelmeden önce görselleri arka planda yükleyerek daha hızlı bir kullanıcı deneyimi sunmak.
- Dinamik Görsel Değiştirme: Kullanıcı etkileşimlerine (fareyle üzerine gelme, tıklama vb.) veya belirli koşullara göre görselleri değiştirmek.
- Görsel Boyut Bilgisi: Yüklenen görsellerin doğal genişlik ve yükseklik gibi boyut bilgilerine erişmek ve bunlara göre düzenlemeler yapmak.
- Oyun Geliştirme veya Canvas Uygulamaları: Canvas üzerinde çizim yapmak için görselleri dinamik olarak yüklemek.
Image Nesnesi Oluşturma
Image nesnesi oluşturmak oldukça basittir. new Image()
yapıcı fonksiyonunu kullanarak yeni bir görsel nesnesi örneği oluşturabilirsiniz:
// Yeni bir Image nesnesi oluşturma
const resim = new Image();
console.log(resim); // Çıktı: <img> (Boş bir img elementi nesnesi)
Bu, aslında hafızada bir <img>
HTML elementi oluşturur. Ancak bu element henüz DOM'a eklenmediği için sayfada görünmez.
Image Nesnesinin Temel Özellikleri
Image nesnesinin, bir HTML <img>
etiketinin sahip olduğu birçok özelliği bulunur. En sık kullanılanlardan bazıları:
src
: Görselin kaynağını (URL'sini) belirler veya döndürür. Görseli yüklemek için bu özelliği ayarlamanız gerekir.resim.src = "https://example.com/resimler/webkolog-logo.png"; console.log(resim.src); // "https://example.com/resimler/webkolog-logo.png"
alt
: Görselin alternatif metnini (erişilebilirlik için) belirler veya döndürür. Görsel yüklenemediğinde veya ekran okuyucular tarafından kullanılır.resim.alt = "Webkolog Logosu";
width
: Görselin CSS piksel cinsinden genişliğini ayarlar veya döndürür. (HTML width niteliği)height
: Görselin CSS piksel cinsinden yüksekliğini ayarlar veya döndürür. (HTML height niteliği)resim.width = 300; // 300 piksel genişlik resim.height = 200; // 200 piksel yükseklik
naturalWidth
: Görselin gerçek (doğal) piksel genişliğini döndürür. Görsel yüklenene kadar 0'dır.// Görsel yüklendikten sonra erişilebilir resim.onload = () => { console.log("Doğal Genişlik:", resim.naturalWidth); console.log("Doğal Yükseklik:", resim.naturalHeight); };
naturalHeight
: Görselin gerçek (doğal) piksel yüksekliğini döndürür. Görsel yüklenene kadar 0'dır.complete
: Görselin tamamen yüklenip yüklenmediğini gösteren bir boolean değer döndürür (true
/false
).
Image Nesnesinin Olayları (Events)
Görselin yüklenme durumu gibi önemli anları yakalamak için olay dinleyicileri kullanırız:
onload
: Görsel başarıyla yüklendiğinde tetiklenir. Bu, genelliklenaturalWidth
venaturalHeight
gibi özelliklerin güvenli bir şekilde erişilebilir olduğu andır.const imgEl = new Image(); imgEl.src = "https://picsum.photos/id/237/200/300"; // Örnek bir görsel URL'si imgEl.onload = () => { console.log("Görsel başarıyla yüklendi!"); console.log(`Boyutlar: ${imgEl.naturalWidth}x${imgEl.naturalHeight}`); document.body.appendChild(imgEl); // Görseli DOM'a ekle };
onerror
: Görsel yüklenirken bir hata oluştuğunda tetiklenir (örneğin, görsel bulunamazsa veya bozuksa).const imgElHata = new Image(); imgElHata.src = "https://example.com/bu-resim-yok.png"; // Hatalı bir URL imgElHata.onerror = () => { console.error("Görsel yüklenirken bir hata oluştu!"); // Varsayılan bir resim gösterebilirsiniz imgElHata.src = "https://via.placeholder.com/150?text=Resim+Yüklenemedi"; }; document.body.appendChild(imgElHata);
Pratik Kullanım Alanları
1. Görsel Ön Yükleme (Preloading)
Bir sonraki sayfa veya bölüm için görselleri önceden yüklemek, kullanıcı deneyimini iyileştirir.
const gorseller = [
"https://picsum.photos/id/238/200/300",
"https://picsum.photos/id/239/200/300",
"https://picsum.photos/id/240/200/300"
];
function gorselOnYukle(urls) {
urls.forEach(url => {
const img = new Image();
img.src = url;
img.onload = () => console.log(`${url} yüklendi.`);
img.onerror = () => console.error(`${url} yüklenemedi!`);
});
console.log("Görsel ön yükleme başlatıldı...");
}
gorselOnYukle(gorseller);
2. Dinamik Görsel Değiştirme (Örnek: Hover Efekti)
JavaScript ile DOM'daki mevcut bir <img>
etiketinin src
özelliğini değiştirebilirsiniz.
// HTML'de şöyle bir resim olduğunu varsayalım: <img id="anaResim" src="resim1.jpg" alt="Ana Resim">
const anaResim = document.getElementById("anaResim");
const kucukResimler = [
{ thumb: "resim1_thumb.jpg", full: "resim1_buyuk.jpg" },
{ thumb: "resim2_thumb.jpg", full: "resim2_buyuk.jpg" }
];
kucukResimler.forEach(res => {
const thumbImg = document.createElement("img");
thumbImg.src = res.thumb;
thumbImg.style.cursor = "pointer";
thumbImg.style.marginRight = "10px";
thumbImg.addEventListener("click", () => {
anaResim.src = res.full; // Tıklanınca büyük resmi göster
});
document.body.appendChild(thumbImg); // Küçük resimleri sayfaya ekle
});
3. Görsel Boyutlarını Kontrol Etme
Yüklenen görsellerin gerçek boyutlarını alarak, örneğin bir galeride düzenleme yapabilirsiniz.
const yuklenecekResim = new Image();
yuklenecekResim.src = "https://picsum.photos/id/241/600/400";
yuklenecekResim.onload = () => {
console.log(`Yüklenen resmin doğal boyutları: ${yuklenecekResim.naturalWidth}x${yuklenecekResim.naturalHeight}`);
if (yuklenecekResim.naturalWidth > 500) {
console.log("Resim çok geniş, yeniden boyutlandırılıyor...");
yuklenecekResim.width = 500; // Genişliği 500 piksele ayarla
}
document.body.appendChild(yuklenecekResim);
};
Sonuç
JavaScript'in Image nesnesi, web uygulamalarınızda görsellerle dinamik ve etkileşimli bir şekilde çalışmanız için harika bir araçtır. Görsel ön yükleme, dinamik içerik değiştirme, oyun geliştirme veya resim düzenleme gibi birçok senaryoda bu nesnenin gücünden faydalanabilirsiniz. src
özelliği, onload
ve onerror
olayları, görsellerin yönetiminde size tam kontrol sağlar. Görsel manipülasyonu yeteneklerinizi geliştirerek, daha zengin ve dinamik web deneyimleri sunmaya hazır olun!
Webkolog'u takipte kalın!
Hepinize bol kodlu ve başarılı projeler dilerim!
0 yorum:
Yorum Gönder