Иногда сайт или приложение загружаются с такой скоростью, что белый экран монитора и “вечное” ожидание прогрузки способны вывести из состояния равновесия кого угодно.
Причин у этого может быть множество, но основные две:
- неоптимизированное содержимое страницы;
- медленная скорость соединения у пользователя.
Чтобы не вызывать у посетителя негативные эмоции о ресурсе, дизайнеры и разработчики пошли на ухищрение - создали скелетный экран загрузки.
Скелетная загрузка - это появление на экране плейсхолдеров нейтрального цвета, чаще всего светло-серого, на месте которого, по завершению загрузки появится контент.
По данным исследования продуктового дизайнера компании "Clio" Билла Чанга, скелетная загрузка используется, чтобы дать понять пользователю, что страница загружается. В сравнении с пустым экраном и спиннером она создаёт иллюзию более быстрой загрузки страниц.
Как создать скелетный экран загрузки
Анимировать загрузку страницы будем через добавление класса skeleton к элементам, которые нужно анимировать. Стили для этого класса
.skeleton { position: relative; cursor: default; } .skeleton::after { background-image: linear-gradient( 90deg, #EEEEEE 0%, #EEEEEE 40%, #DDDDDD 50%, #DDDDDD 55%, #EEEEEE 65%, #EEEEEE 100% ); background-size: 400%; animation: skeleton 1500ms infinite; content: ''; z-index: 2; width: 100%; height: 100%; position: absolute; top: 0; left: 0; right: 0; bottom: 0; border-radius: 5px; } @keyframes skeleton { from {background-position: 100% 100%;} to {background-position: 0 0;} }
Если использовать только CSS, то анимация загрузки страницы будет бесконечно повторяться, поэтому нам нужен JS файл для удаления стиля skeleton.
На моей тестовой странице он выглядит следующим образом:
const skeletons = document.querySelectorAll('.skeleton') skeletons.forEach((skeleton) => { setTimeout(() => { $(skeletons).removeClass('skeleton') }, 4000) })
Так как страница из-за малого веса загружается за доли секунд, я поставил таймер, который будет удалять необходимый мне стиль. Вы же можете сделать так, чтобы стиль удалялся по завершению загрузки всего контента.
Финальный результат выглядит следующим образом:
Скелетная загрузка - это не сложный в создании, но эффективный приём улучшения восприятия вашего ресурса пользователями. Обязательно попробуйте его и делитесь своими показателями в комментариях.
Файл с примером вы можете скачать - тут.