Більшість пошукових систем індексують зображення, які є прихованими, доки ви не використовуєте вбудовані стилі, щоб приховати зображення. Більшість браузерів не завантажують приховані зображення.
Існує тестова сторінка, яка може підтвердити цю претензію. Виняток становлять деякі старі веб-переглядачі для мобільних пристроїв, але я вважаю, що ледача завантаження мобільних телефонів може бути корисною для хорошого перегляду.
http://www.w3.org/2009/03/image-display-none/test.php
У свій файл CSS додайте наступні зміни.
.lazy-img { display: none; }
Тепер ви можете завантажити сторінку з таким ледачим зображенням, і вони будуть індексуватися.
<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>
Важливо, щоб ви включили title
атрибут для зображення. Або оточуєте <img
тег <a
> посиланням > тег та текст посилання. В іншому випадку пошукові системи будуть пов'язувати ключові слова із зображенням по відстані слова. Ви збираєтеся всю цю проблему для SEO, ви також можете пройти весь шлях.
Якщо ви використовуєте вище, як є. Нічого не відображатиметься, оскільки зображення приховані. Ви хочете видалити цей клас у нижній частині документа. Ключовим тут є використання вбудованого чистого Javascript. Цей Javascript виконується одразу після завершення компонування вищевказаних елементів. Якщо ви завантажите всі свої зовнішні файли JS внизу (як слід). Ви повинні розмістити цей блок Javascript над цими файлами. Щоб не було відставання в зміні 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>
Тепер я додав умовні умови для IE9, оскільки він не підтримує getElementsByClassName
8 та старших версій. Що має статися (не перевірено), це те, що ці браузери просто завантажуватимуть зображення як є.
Перевага такого підходу полягає в тому, що він підтримує HTML-вигляд чистим з точки зору веб-сканера.