предисловие
Эта статья представляет собой процедуру, которую я использую при написании CSS. Каким бы великолепным ни был эффект, он остается прежним.
Ступенчатая анимация
Иногда нам нужно добавить одну и ту же анимацию к нескольким элементам.Поиграв, нетрудно обнаружить, что они будут двигаться вместе и заканчиваться вместе, что будет выглядеть очень пресно.
Так как анимация будет немного интересной причиной? Очень просто, так как они все в то же время начинают двигаться, то пусть они не в то же время движения не на него не на него. Как они не в то же время деятельности? Анимация CSS отметила задержку (delay
) это свойство. Например, если есть десять элементов, воспроизводящих десять анимаций, установите время воспроизведения анимации второго элемента на 0,5 секунды позже, чем первого элемента (то есть установите задержку на 0,5 секунды), и так далее для других элементов. , так что они расположены в шахматном порядке для уникального визуального эффекта.
Это так называемая поэтапная анимация: задавая разное время задержки, достигается эффект поэтапного воспроизведения анимации.
Этот демонстрационный адрес:Staggered Wave Loading
Разделить текст с помощью JS
Есть и часто используемый геймплей: разделяйте предложения или слова на буквы с помощью JS, и добавляйте анимации с разной задержкой к каждой букве, что тоже шикарно
Этот демонстрационный адрес:Staggered LandIn Text
Ступенчатая анимация в разных положениях
Обычно мы начинаем чередование с первого элемента. Но если вы хотите чередовать от среднего элемента, вам нужно добавить значение к задержке текущего элемента.Это значение представляет собой расстояние от нижнего индекса среднего элемента до нижнего индекса текущего элемента (то есть абсолютный значение разницы между нижними индексами) произведение с размером шага
Этот демонстрационный адрес:Reveal Text
Случайная анимация частиц
Говоря о случайности, мы можем добиться еще более безумного эффекта: анимировать сотни частиц, чередующихся в случайное время и случайных размеров. Таким образом, мы можем имитировать эффект снега с помощью чистого CSS.
Этот демонстрационный адрес:Snow (Pure CSS)
Псевдоклассы и псевдоэлементы
псевдо-класс
Состояние HTML-элементов может динамически изменяться. Например, когда ваша мышь наводится на кнопку, кнопка становится «подвешенной», тогда мы можем использовать псевдокласс:hover
чтобы выбрать кнопку в этом состоянии и изменить ее стиль.
:hover
Это один из наиболее часто используемых псевдоклассов. Другим очень часто используемым псевдоклассом является:nth-child
, который используется для выбора дочернего элемента элемента. другие подобные:focus
,:focus-within
и т. д. Есть также определенные виды использования.
Этот демонстрационный адрес:Button Hover Border Stroke With Float Text
Абсолютное позиционирование для достижения нескольких границ
Кто предусмотрел, что кнопки могут иметь только один набор границ? Используйте абсолютное позиционирование иpadding
, мы можем сделать 3 набора рамок разного размера для кнопки, чтобы эффект был более ослепительным
Этот демонстрационный адрес:Button Hover Multiple Border Stroke
псевдоэлемент
Короче говоря, псевдоэлемент — это дополнительный элемент, вставляемый поверх исходного элемента, и этот элемент не действует как тег HTML, поэтому структуру HTML можно поддерживать в чистоте.
Мы знаем, что каждый элемент имеет::before
а также::after
Эти два псевдоэлемента, то есть каждый элемент предоставляет нам 3 прямоугольника (1 для самого элемента, 2 для псевдоэлемента) для рисования формы. теперь сноваclip-path
Благодаря этому свойству можно нарисовать практически любую фигуру, в зависимости от вашей фантазии.
Приведенная выше анимация — это анимация полосы поперек текста.Полоса — это псевдоэлемент, соответствующий каждому тексту.Применив анимацию к каждому тексту и его псевдоэлементу, можно добиться эффекта, показанного на рисунке выше.
Этот демонстрационный адрес:Header With Slide Bar
attr() генерирует текстовое содержимое
Элементы могут иметь настраиваемые значения атрибутов, которые обычно именуются в форматеdata-*
attr()
Используется для получения значения этого пользовательского атрибута элемента и присвоения его значению его псевдоэлемента.content
как его сгенерированный контент
Используя эту функцию, мы можем использовать псевдоэлементы для «копирования» другого текста на основе исходного текста, как показано на следующем рисунке.
Это выглядит как-то грязно, не так ли? ок, добавьoverflow: hidden
, чтобы скрыть лишний текст. Разбивая текст через JS и применяя чересстрочную анимацию, получается следующий эффект, о котором далее и пойдет речь в этой статье.overflow
с завязанными глазами
Этот демонстрационный адрес:Staggered Float Text Menu
слепота переполнения
Я делал эффект кнопки вспышки раньше: когда мышь наводит на кнопку, свет проходит слева направо.
Автор использует градиент для имитации этого света.transform: translateX()
панорамировать вправо
Но это явно неправильно, почему этот свет можно увидеть? Разве это не должно быть «заблокировано»?
Итак, добавляем к кнопкеoverflow: hidden
, свет скрыт, когда свет находится за пределами кнопки
Этот демонстрационный адрес:Button Hover Shining
пользовательский ввод
По умолчаниюinput
Что, если это слишком уродливо? Затем сначала сотрите его и установитеopacity: 0
Только что
а такжеinput
тесно связанlabel
Элемент, потому что когда пользователь нажимаетlabel
также срабатывает, когда элементinput
изменение статуса. Используя эту функцию, можноlabel
Пользовательские стили не только в этом, но и вlabel
добавьте дополнительные элементы рядом с ним, используя селектор родственных элементов~
Выберите их для определения стилей, используйте:checked
Слушатель псевдоклассаinput
Изменение состояния плюс небольшая анимация сделаны правильноinput
настройка
насколько я могу судить,input
Элементы также поддерживают псевдоэлементы, что наводит на другую идею: используйтеappearance: none
ликвидироватьinput
стиль по умолчанию, а затем настроить его с помощью псевдоэлементов, чтобыlabel
Вы можете сохранить его оригинальный стиль.
Этот демонстрационный адрес:Todo List
CSS-функции
Хорошо используйте некоторые функции CSS, вы также можете добавить много цвета в свою работу.
animation
включено сюдаtransition
а такжеtransform
Ниже моя личная визитка, угадайте, какие приемы в ней использованы?
Во-первых, используется анимация четырех границ в начале.overflow
с завязанными глазами
Во-вторых, полоса использовала текст для использования анимации псевдоэлемента.
Наконец, последовательное появление социальных иконок использует поэтапную анимацию.
Этот демонстрационный адрес:Profile Card
border-radius
Добавьте закругленные углы к блокам, которые часто используются для украшения таких компонентов, как кнопки.
Если установлено50%
Он круглый, что тоже очень часто
неправильная изогнутая форма
Настройка нескольких вершинborder-radius
Может делать неправильные изогнутые края
Этот демонстрационный адрес:Nav Tab
box-shadow
Добавьте тень к коробке, увеличьте трехмерный эффект коробки, можно накладывать на несколько слоев и сделает тень более шелковистой.
Этот демонстрационный адрес:Pagination
внутреннее свечение
уведомлениеbox-shadow
Еще одинinset
, для освещения внутри коробки
Используя эту функцию, мы можем установить цвет в пределах определенного диапазона внутри поля, чтобы получить форму полумесяца.
Добавьте анимацию и эффекты фильтров, и «Алая луна» уже здесь!
Обратите внимание, что он излучает слабый красный свет, который на самом деле является эффектом фильтра размытия, примененного к двум псевдоэлементам.
Этот демонстрационный адрес:Crimson Crescent Loading
text-shadow
тень текста, по сути иbox-shadow
То же самое, но относительно текста, часто используется для подсветки текста, а также может использоваться для создания таких эффектов, как неоновый текст и псевдо-3D-текст посредством многослойных наложений.
светящийся текст
Этот демонстрационный адрес:Staggered GlowIn Text
Неоновый текст
Этот демонстрационный адрес:Neon Text
Псевдообъемный текст
Этот демонстрационный адрес:Staggered Bouncing 3D Loading
background-clip:text
Фон можно обрезать до основного цвета текста, который часто используется дляcolor: transparent
Создайте градиентный текст с помощью
Этот демонстрационный адрес:Menu Hover Fill Text
gradient
Градиенты можно использовать в качестве фонового изображения, они обладают сильными цветовыми эффектами и даже могут использоваться для имитации света.
linear-gradient
Линейный градиент является наиболее часто используемым градиентом.
В этой работе используется HTMLdialog
метки, фоны с линейным градиентом, анимация иoverflow
Непонятный метод, можете посмотреть внимательно :)
Этот демонстрационный адрес:Confirm Modal
radial-gradient
Радиальные градиенты часто используются для создания круглых фонов, как в приведенном выше примере.Снежный фонпредставляет собой эллиптический радиальный градиент
Кроме того, поскольку фон можно накладывать друг на друга, мы можем накладывать несколько радиальных градиентов с разными положениями и размерами для создания группы точек.Вместе с анимацией это создает эффект частиц без избыточности.div
элемент
Этот демонстрационный адрес:Particle Button
conic-gradient
Конические градиенты можно использовать для создания круговых диаграмм.
Наложите на круговую диаграмму псевдоэлемент и поместитеcontent
Установив определенное значение (это значение вычисляется переменными CSS), можно сделать эффект счетчика, и повязка на глаза в очередной раз выполнила свою миссию.
Этот демонстрационный адрес:Gauge (No SVG)
filter
фильтр в ПС,blur
Наиболее используемое
эффект слияния
когдаblur
Фильтры иcontrast
При совместном использовании фильтры создают слияние (gooey
) специфический эффект
Этот демонстрационный адрес:Snow Scratch
backdrop-filter
Примените фильтр к фону, чтобы создать эффект матового стекла.
Этот демонстрационный адрес:Frosted Glass
mix-blend-mode
Режим наложения в PS часто используется для специальных эффектов текста на заднем плане.
В следующем используется режим цветового фильтра (screen
) для достижения эффекта текстовой видеомаски
Этот демонстрационный адрес:Video Mask Text
clip-path
Резка в PS может делать все виды неправильных форм. Было бы интересно в сочетании с анимацией
Этот демонстрационный адрес:Name Card Hover Expand
эффект глюка
из-заclip-path
Существует функция обрезки, поэтому вы можете накладывать несколько текстов друг на друга, пропорционально разрезать их на несколько частей, а затем применять чересстрочную анимацию для создания классного эффекта сбоя (glitch
).
Этот демонстрационный адрес:Cross Bar Glitch Text
mask
Маска в ПС. Так называемая маска означает, что исходное изображение показывает только непрозрачную часть изображения маски.
эффект пустоты
несмотря на то чтоclip-path
Он может вырезать форму, но не может быть выдолблен, потому что не может контролировать внутреннюю часть формы.
Некоторые люди (включая меня) могут использовать псевдоэлементы для «симуляции» выдолбления (установив тот же цвет фона), но на самом деле это не выдолбление, и оно будет видно, если вы измените фон или поплавок на изображении, тогда мы прибегнем к маскировке
Предположим, вы хотите сделать полое кольцо, тогда вы просто используете радиальный градиент в качестве маски элемента, и первыйcolor-stop
установить прозрачный, другойcolor-stop
Установите для него другой цвет, потому что определение маски состоит в том, чтобы отображать только непрозрачную часть изображения маски.
Примечание. Для сглаживания этот радиальный градиент должен иметь дополнительный элемент посередине.color-stop
Для буферизации установите исходную длину плюс 0,5 пикселя.
Этот демонстрационный адрес:Circle Arrow Nav
-webkit-box-reflect
Эффект проекции, редко используемый, подходит для работ с сильным стереоскопическим эффектом.
Этот демонстрационный адрес:Card Flip Reflection
web animations
Хотя это не функция CSS, она часто используется для выполнения действий, недоступных CSS.
Так когда его использовать? Это естественно используется, когда в анимации CSS есть свойства, которые нельзя получить из CSS.
отслеживать положение мыши
В настоящее время не существует API для получения положения мыши в CSS, поэтому рассмотрите возможность использования для этого JS.
Проконсультировавшись с соответствующим API DOM, было обнаружено, что в API, который прослушивает события мыши, вы можете передатьe.clientX
а такжеe.clientY
чтобы получить текущую позицию мыши
Поскольку положение мыши может быть получено, отследить положение мыши несложно: отслеживаяmouseenter
а такжеmouseleave
событие, чтобы получить положение мыши, когда она входит и выходит из элемента, и использовать эту координату в качестве расстояния смещения мыши, отслеживатьmousemove
событие, чтобы получить положение мыши при движении по элементу, а также использовать эту координату как расстояние смещения мыши, чтобы был достигнут эффект слежения за мышью
Этот демонстрационный адрес:Menu Hover Image
CSS Houdini
CSS Houdini — это базовый API CSS, который позволяет нам расширять функциональность CSS с помощью этого набора интерфейсов.
заставить градиент двигаться
В настоящее время мы не можем анимировать градиенты напрямую, потому что браузер не понимает, какой тип значения изменяется.
В этот момент мы можем использоватьCSS.registerProperty()
чтобы зарегистрировать нашу пользовательскую переменную и объявить тип ее синтаксиса (syntax
) — цветотип<color>
, чтобы браузер мог понять и применить интерполяцию к цвету для анимации
Помните градиент конуса, упомянутый вышеconic-gradient()
? Поскольку его можно использовать для создания круговой диаграммы, можем ли мы заставить круговую диаграмму двигаться? Ответ положительный, определите три переменные:--color1
,--color2
а также--pos
,в--pos
Тип синтаксиса - это процент длины<length-percentage>
, измените его с0
стали100%
круговая диаграмма будет вращаться по часовой стрелке
Используя абсолютное позиционирование и контекст наложения, мы можем сложить несколько круговых диаграмм от маленького к большому, затем установить для них разные цвета, применить чересстрочную анимацию и получить следующий ослепительный эффект.
Этот демонстрационный адрес:Mawaru
пасхальные яйца
Сдержанное меню в стиле героя, написанное с комбинацией поэтапной анимации и псевдоэлементов.
Этот демонстрационный адрес:Shinchou Menu
наконец
Поздравляем, вы закончили читать эту статью. Будь то визуальное пиршество, обучение или навигация прямо из букмарклета (смеется), сила CSS всегда превосходит ваше воображение. Пока ты смеешь творить, ты бог этого мира.