Sebagian besar mesin pencari akan mengindeks gambar yang disembunyikan selama Anda tidak menggunakan gaya sebaris untuk menyembunyikan gambar. Mayoritas browser tidak akan memuat gambar tersembunyi.
Ada halaman pengujian yang dapat memverifikasi klaim ini. Beberapa peramban seluler yang lebih lama merupakan pengecualian, tetapi saya berpendapat pemuatan malas pada telepon seluler bisa menjadi kontra produktif terhadap pengalaman menjelajah yang baik.
http://www.w3.org/2009/03/image-display-none/test.php
Dalam file CSS Anda tambahkan modifikasi berikut.
.lazy-img { display: none; }
Sekarang Anda dapat memuat halaman dengan gambar-gambar malas seperti ini dan mereka akan diindeks.
<body>
<img class="lazy-img" src="img1.jpeg" title="image title"/>
<img class="lazy-img" src="img2.jpeg" title="image title"/>
<img class="lazy-img" src="img3.jpeg" title="image title"/>
<img class="lazy-img" src="img4.jpeg" title="image title"/>
</body>
Penting bahwa Anda menyertakan title
atribut untuk gambar. Atau Anda mengelilingi <img
tag> dengan tautan <a
> tag dan teks tautan. Kalau tidak, mesin pencari akan mengaitkan kata kunci dengan gambar dengan jarak kata. Anda akan mengalami semua masalah ini untuk SEO Anda mungkin juga pergi jauh-jauh.
Jika Anda menggunakan di atas seperti apa adanya. Tidak ada yang akan ditampilkan karena gambar disembunyikan. Anda ingin menghapus kelas ini di bagian bawah dokumen. Kuncinya di sini adalah menggunakan Javascript murni sebaris. Javascript ini dijalankan segera setelah tata letak elemen-elemen di atas selesai. Jika Anda memuat semua file JS eksternal Anda di bagian bawah (sebagaimana mestinya). Anda harus menempatkan blok Javascript ini di atas file-file itu. Sehingga tidak ada lag dalam memodifikasi DOM.
<body>
<!--[if lte IE 8]
<style type="text/css">.lazy-img { display: block !important; }</style>
[endif]-->
<noscript><style type="text/css">.lazy-img { display: block !important; }</style></noscript>
<img class="lazy-img" src="img1.jpeg" title="image title"/>
<img class="lazy-img" src="img2.jpeg" title="image title"/>
<img class="lazy-img" src="img3.jpeg" title="image title"/>
<img class="lazy-img" src="img4.jpeg" title="image title"/>
<![if gte IE 9]>
<script type="text/javascript">
var images = document.getElementsByClassName('lazy-img');
Array.prototype.forEach.call(images, function(image){
image.setAttribute("data-src",image.getAttribute("src"));
image.setAttribute("src","loading.gif");
});
while(images.length > 0) { images[0].className = ""; }
</script>
<![endif]>
</body>
Sekarang saya menambahkan persyaratan untuk IE9 karena tidak mendukung getElementsByClassName
dalam 8 dan lebih tua. Apa yang harus terjadi (tidak diuji) adalah browser-browser itu hanya akan memuat gambar apa adanya.
Keuntungan dari pendekatan ini adalah menjaga HTML tetap bersih dari perspektif webcrawler.