Привет, меня зовут Стивен.
Когда многие веб-сайты загружают данные, чтобы страница не была слишком пустой, они будут использовать этот метод, чтобы объявить о загрузке контента, тем самым улучшив взаимодействие с пользователем:
Этот эффект называется по-китайскиСкелетонный экран, называется по-английскиSkeleton, в этом выпуске мы поделимся с вами тем, как добиться такого эффекта в CSS.
Видеоверсия этого урока находится по адресувоооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооДобро пожаловать три подряд внимание!
часть HTML
Откройте редактор CodePen и добавьте некоторую структуру в раздел HTML, например карточку.
добавить один<div>
Этикетка,class
названныйcard
; на этой карточке будет картинка, добавьте<div>
,class
названныйimage
, и добавьте к нему изображение.
Затем идет заголовок и текст, добавьте новый<div>
,class
названныйcontent
. добавить новый<h4>
Метка используется для отображения заголовка, а другая<div>
,class
названныйdescription
, который используется для отображения содержимого.
Разделы CSS
Перейдите в раздел CSS и сначала займитесь стилем карты. Присоединяйсяbody
селектор, установите светло-серый цвет фона и шрифтHelvetica
, размер текста15px
, а затем используйте Flexbox для центрирования содержимого вверх, вниз, влево и вправо.
Присоединяйся.card
селектор, заданная ширина320px
, цвет фона установлен на белый, так что светло-серый фон может выделить этот белый цвет.
Добавьте немного закругленных углов, установите6px
, так как в него будет добавлено изображение, для того, чтобы изображение имело закругленные углы, установитеoverflow
дляhidden
, а затем добавьте тень, очень легкую на ней.
Затем установите стиль контейнера изображения и добавьте.image
селектор, установите высоту на200px
. Затем внутри изображения добавьте.image img
селектор, наборdisplay
дляblock
, ширина100%
. Высота наследуется от родительского контейнера и устанавливается равнойinherit
, чтобы сохранить пропорции изображения,object-fit
установить какcover
.
Рядом с частью контента добавьте.content
селектор, наборpadding
вверх и вниз2rem
,о1.8rem
;Присоединяйсяh4
селектор, задающий стиль заголовка,margin
Установить как сверху, так и слева0
, следующее1rem
; и размер текста, и межстрочный интервал установлены на1.5rem
.
Наконец, текст, добавьте.description
селектор с размером текста, установленным на1rem
, межстрочный интервал установлен на1.4rem
, шаблон для этой карты готов.
Сделать каркасный экран
Вернитесь к части HTML, скопируйте еще одну карточку, но очистите изображения и текст внутри и добавьте файл с именемloading
изclass
, мы применим к этой карте эффект каркасного экрана.
Перейдите в раздел CSS и поставьтеbody
внутриjustify-content
установить значение, изменить наspace-evenly
, чтобы две карты могли равномерно распределить пустое пространство.
Затем, поскольку позже один и тот же серый цвет будет использоваться в нескольких местах, я определю этот серый цвет как переменную CSS и добавлю:root
селектор, набор--loading-grey
светло-серый.
У нас есть три места, где нам нужно добавить серые скелеты: изображение, заголовок и текст. Поэтому установите цвет фона всех трех селекторов на светло-серый.
Заголовку и тексту нужно задать некоторые стили по отдельности, добавить.loading h4
селектор, который устанавливает стиль для позиции заголовка, будетmin-height
установить как1.6rem
, с закругленными углами, установленными на4px
.
воссоединиться.loading .description
Селектор, задайте стиль положения текста, здесь высота задается чуть больше,min-height
установить как4rem
, закругленные углы также установлены на4px
.
часть анимации
Теперь, когда статический каркасный экран в основном завершен, давайте займемся частью анимации.
Анимация экрана-скелета похожа на луч света, идущий слева направо, поэтому я установил для фона градиентный цвет. Присоединяйсяbackground
, установить какlinear-gradient()
, угол немного наклонен, задан как100deg
; затем полностью прозрачным белым, позиция40%
; градиент до полупрозрачного белого в50%
; до полностью прозрачно-белого при60%
.
Затем залейте основной цвет фона, светло-серый, и теперь вы можете видеть луч.
Итак, как мне его анимировать?Сначала я удвою ширину фона и установлю его на200%
, выдерживание высоты100%
. так что черезbackground-position
Управляйте смещением фона, чтобы добиться эффекта стремительного света.
теперь, когдаbackground-position-x
установить как100%
, светлая часть будет слева, и установите0%
Если это так, светлая часть будет справа, поэтому переход от большого числа к меньшему может привести к развертке слева направо.
Но этого недостаточно, нам нужно зарезервировать некоторые буферы слева и справа, чтобы свет можно было подметать снаружи, поэтому сначала измените его на120%
.
затем определите@keyframes
названныйloading
,Присоединяйсяto
блокировать, устанавливатьbackground-position-x
для-20%
.
Добавьте настройки анимации, установите1
секунд, название анимацииloading
, ускорение равноease-in-out
, количество повторений бесконечноinfinite
.
Видно что появился эффект заметания.Мне кажется,заметает чуть быстрее,и интервал чуть больше.Можно прямо копировать оригиналbackground-position-x
изменить на большее значение, например.180%
, так что фон должен перемещаться на большее расстояние для достижения эффекта.
Наконец, небольшая доработка, луч косой, как лучи в трех положениях серого могут выглядеть одинаково?
Вам нужно только немного отсрочить время начала заголовка и содержание анимации, и установить заголовокanimation-delay
для.05s
, а внутреннийanimation-delay
для.06s
.
Давайте посмотрим на завершенный эффект этого случая
Вот введение в метод написания каркасных экранных эффектов с помощью CSS.В практических приложениях вам нужно только добавить в контейнер, когда данные загружены.loading
этоclass
; и после завершения загрузки данных данные отображаются в указанной позиции, аloading
этоclass
Его можно удалить, и введение здесь вводиться не будет.
Выше приведено все содержание, которое будет представлено в этом выпуске.
Исходный код для этого случая находится накод спрей.IO/стивен класс/боюсь...
Ваша поддержка-моя мотивация, пожалуйста, обратите вниманиеМинимальный класс CodingStartup, давайте работать вместе!
- Станция Б:space.bilibili.com/451368848
- YouTube: YouTube.com/кодирование начало…
- Самородки:Талант /user/249773…