предисловие
При загрузке сетевых данных, чтобы улучшить взаимодействие с пользователем, обычно используется круговая анимация загрузки или экран-скелет, чтобы занять пространство. По сравнению с анимацией загрузки эффект Skeleton Screen более яркий, и его очень просто реализовать. Простой Skeleton Screen можно реализовать с помощью CSS.
идеи
- HTML для построения скелета
- CSS плюс стиль
- CSS плюс анимация
Начните с построения скелета
Каркасная структура очень проста, просто поместите несколько понравившихся вам блочных элементов, и все в порядке.
<div class='screen-root'>
<ul>
<li/>
<li/>
<li/>
</ul>
</div>
CSS-окрашивание
Скелетный экран, который мы часто видим, выглядит так
Для облегчения описания и усиления контраста я сначала сделаю версию-призрак.
Сначала используйте csslinear-gradient
Свойство рисует градиентное изображение красного цвета с небольшим количеством зеленого и заполняет его в качестве фона.li
Этикетка
Linear-gradient() может создать многоцветное изображение с линейным градиентом.Дополнительную информацию см.здесь
li{
background-image: linear-gradient(90deg, #ff0000 25%, #41de6a 37%, #ff0000 63%);
width: 100%;
height: 0.6rem;
list-style: none;
}
При фактическом использовании измените карту градиента на обычный цвет, например:
background-image: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%)
заставить его двигаться
Все, что осталось сделать, это заставить зеленый цвет двигаться посередине.
Вы можете придумать какой-нибудь способ заставить его двигаться?
Здесь используется то, что путем растяжения фонового изображения, динамической установки процента позиционирования фона и изменения позиционирования фона вычисляются различные значения смещения изображения относительно контейнера для достижения эффекта анимации.
li{
background-image: linear-gradient(90deg, #ff0000 25%, #41de6a 37%, #ff0000 63%);
width: 100%;
height: 0.6rem;
list-style: none;
background-size: 400% 100%;
background-position: 100% 50%;
animation: skeleton-loading 1.4s ease infinite;
}
@keyframes skeleton-loading {
0% {
background-position: 100% 50%;
}
100% {
background-position: 0 50%;
}
}
здесь, чтобы датьbackground-position
Свойство задает два значения, первое значение представляет смещение горизонтального положения относительно контейнера, а второе значение представляет смещение вертикального положения относительно контейнера.
Использовать процентные настройкиbackground-position
значения, он выполняет формулу, которая вычисляет фактическое значение таргетинга(container width - image width) * (position x%) = (x offset value)
, то есть разница в ширине между контейнером и изображением умножается на заданное значение позиционирования в процентах, и результатом является фактическое значение смещения.background-size
Одна из целей установки ширины файла .
Некоторые студенты могут спросить, будетbackground-size
Значение устанавливается на 50%, а контейнер может генерировать ширину разницы. Да, но таким образом, фоновое изображение будет плитовать весь контейнер, вы будете удивлены зеленой точкой в двойной.
Можно попробовать установить разные значения background-size, посмотреть, как он себя ведет, и подумать, почему так происходит.
Наконец, используя анимацию по ключевым кадрам, установитеbackground-position
Значение по координате x идет от100%
прибыть0%
@keyframes skeleton-loading {
0% {
background-position: 100% 50%;
}
100% {
background-position: 0 50%;
}
}
Предположим, что ширина контейнера100px
, то ширина фонового изображения равна400px
Используя вышеуказанную формулу, в анимации первого кадра, истинное значение смещения фонового изображения относительно контейнера
(100px-400px)*100% = -300px
Фактическое смещение последнего кадра
(100px-400px)*0% = 0
Процесс анимации на самом деле представляет собой линейное фоновое изображение с шириной, в 3 раза превышающей смещение контейнера от контейнера.-300px
прибыть0
процесс изменения.
последний шаг
Последний шаг - не забудьте изменить цвет фона на обычный...
Вышеприведенный код (GitHub.com/Yes Can Prosperity/SK…)