Можем ли мы ограничить анимацию ключевых кадров CSS областью действия

Интересно, можно ли ограничить анимацию ключевых кадров областью, основанной на именах классов. Преимущество заключается в возможности использовать одно и то же имя анимации несколько раз без проблем. Я не мог найти никакой информации об этом ..

Если это невозможно: есть ли какие-либо передовые методы разрешения конфликтов имен?

Раньше я использовал что-то вроде SCSS для создания автоматически созданных имен для моих ключевых кадров. Они могут быть не такими наглядными, но гарантируют уникальность. Что-то вроде $animation-id-count: 0 !default; @function animation-id{ $animation-id-count: $animation-id-count + 1; @return animation-id-#{$animation-id-count}; }, а потом просто используйте как .class { $id: animation-id(); @keyframes #{$id}{ ...keyframes } }; animation: $id 1s infinite;. Таким образом, если вы вставите его в другое место в SCSS или переместите, он все равно будет соответствовать правильной анимации.

somethinghere 05.04.2018 11:20

Это интересный способ решения проблем с именованием - просто сделал тестовую реализацию, и она отлично сработала. Пытаясь следовать структуре itcss, я надеялся найти способ поместить все анимации в дополнительный файл scss. Это было бы невозможно, но большое спасибо за ваше предложение. Придется подумать о том, чтобы пойти по этому пути :)

Luckyfella 05.04.2018 11:45

@somethinghere похоже, что определение объема, как я хотел бы, невозможно. Хотели бы вы переписать свой комментарий как ответ и предоставить полный короткий пример? Кстати, при увеличении $ animation-id-count внутри функции мне нужен! Global в конце строки, иначе каждый вызов возвращает то же (начальное) значение. Дайте мне знать, если вы хотите задать ответ - в противном случае я мог бы добавить ответ с примером кода. Но, конечно, вы должны получить признание!

Luckyfella 06.04.2018 11:42

Я добавил это как ответ. Я думал об этом и предполагаю, что если бы вы могли найти способ отслеживать пространства имен, вы могли бы использовать функцию, чтобы выяснить, какое имя анимации возвращать, так что это начало. Кроме того, хорошее упоминание о !global, я использовал !default, но это действительно неправильно.

somethinghere 06.04.2018 11:50
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
7
4
1 392
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Раньше я использовал что-то вроде SCSS для создания автоматически созданных имен для моих ключевых кадров. Они могут быть не такими наглядными, но гарантируют уникальность. Что-то вроде:

$animation-id-count: 0 !global;

@function animation-id {

  $animation-id-count: $animation-id-count + 1;
  @return animation-id-#{$animation-id-count};

}

После этого просто используйте функцию в своем коде следующим образом:

.class {

  $id: animation-id();

  @keyframes #{$id}{
    ...keyframes
  }

  animation: $id 1s infinite;

}

Таким образом, если вы вставите его в другое место в SCSS или переместите, он по-прежнему будет соответствовать правильной анимации и не позволит пространствам имен каким-либо образом перекрываться.

Спасибо за ответ!

Luckyfella 06.04.2018 11:53

Это не отвечает на вопрос

Zaqx 30.07.2019 23:19

@zaqx «Если это невозможно: есть ли какие-нибудь передовые методы разрешения конфликтов имен?» - это невозможно, поэтому вот как избежать конфликтов имен. Отвечает на вопрос.

somethinghere 31.07.2019 08:42

@somethinghere «Можно ли ограничить анимацию ключевых кадров CSS областью действия» - верх страницы в большом тексте. Это даже в URL.

Zaqx 31.07.2019 20:52

Другие вопросы по теме