Как дать каждому div разную скорость анимации с помощью css-анимации

Пытаясь хотя бы разобраться в этом, я работаю над веб-сайтом для друга, вот одна из страниц ..

http://sarahboulton.co.uk/livingroom.html

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

Мы надеялись начать применять небольшие анимации к буквам ... что-нибудь в этом роде ...

.lipbalm {
animation: shake 0.1s; 
animation-iteration-count: infinite; }

@keyframes shake {
    0% { transform: translate(0px)  }
    50% { transform: translate(0.5px) }
    100% { transform: translate(0px) }
}

Но можно ли эти движения рандомизировать для каждой буквы, все еще небольшие движения .. но с использованием чего-то похожего на ..

$(document).ready(function(){
    $('.goldrocks-g').css({'left' : (Math.random() * 250) + 350})
});

.. каждая буква случайным образом меняет свое движение, может, одна и заканчивается ..

@keyframes shake {
        0% { transform: translate(0px)  }
        50% { transform: translate(0.4px) }
        100% { transform: translate(0px) }
    }

.. и еще один ..

@keyframes shake {
        0% { transform: translate(0px)  }
        50% { transform: translate(0.1px) }
        100% { transform: translate(0px) }
    }

и что-то похожее по скорости тоже? Все буквы имеют свой собственный div, может быть проще просмотреть исходный код страницы, чтобы увидеть, что происходит!

Java - это совсем другой язык программирования; вы используете JavaScript.

Chris G 30.11.2018 20:50

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

Zohir Salak 30.11.2018 20:58
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
415
3

Ответы 3

Я думаю, что самый простой способ сделать это - создать случайную анимацию дрожания, которую можно было бы применить ко всем буквам. Затем вы можете случайным образом применить встроенный CSS animation-delay: 100ms или animation-delay: 300ms. Этот стиль можно было применять каждый раз по-разному. Все буквы будут использовать одинаковую анимацию встряхивания, но будут иметь разные интервалы анимации в зависимости от времени задержки.

Это должен быть комментарий, а не ответ, поскольку он предлагает новую идею, а не основную проблему, заданную в OP.

Ali Sheikhpour 30.11.2018 21:30

Решение буквально повторно использует всю предыдущую работу OP и просто случайным образом применяет задержку анимации к соответствующим div. Предложенное вами решение бросает всю эту работу и случайным образом генерирует массу новых CSS-анимаций (каждая из которых будет менее производительной). Честно говоря, это своего рода придурок - проголосовать против этого ответа только для того, чтобы ваш ответ был принят.

brianespinosa 30.11.2018 23:02

В комментарии описывается, почему я проголосовал против. Мне не нужны эти супер виртуальные оценки, а голоса - это вежливый способ узнать, согласны ли другие с вашим ответом или нет! Это не конкурс!

Ali Sheikhpour 01.12.2018 09:44

Никто не сказал, что это конкурс. Тот факт, что вы чувствуете необходимость указать на это, говорит о многом. Моя забота - скрыть ответ, который может оказаться полезным для других.

brianespinosa 01.12.2018 20:55

Я бы подошел к этой проблеме, создав несколько вариантов вашего класса встряхивания, а затем назначив эти классы случайным образом, когда вы назначаете случайное созвездие.

Так что-то вроде этого:

css

.shake-1{
  animation: shake-1 0.3s; 
  animation-iteration-count: infinite;
}
.shake-2{
  animation: shake-2 0.3s; 
  animation-iteration-count: infinite;
}
.shake-3{
  animation: shake-3 0.3s; 
  animation-iteration-count: infinite;
}
@keyframes shake-1 {
  0% { transform: translate(0px) }
  50% { transform: translate(2px) }
  100% { transform: translate(0px) }
}
@keyframes shake-2 {
  0% { transform: translate(0px) }
  50% { transform: translate(-2px) }
  100% { transform: translate(0px) }
}
@keyframes shake-3 {
  0% { transform: translate(0px) }
  50% { transform: translate(0px, 2px) }
  100% { transform: translate(0px) }
}

html

<div class = "dyinglight-d shake-1" style = "left: 839.646px; top: 212.011px;">...</div>
<div class = "dyinglight-y shake-2" style = "left: 959.592px; top: 97.9469px;">...</div>

etc

Вот код, который я сделал для вас с кодом вашего сайта, чтобы показать пример его работы: https://codepen.io/ChrisRArendt/pen/jQXjNa

Вы можете сгенерировать стиль CSS, используя javaScript, для интеграции javaScript Math.random() в логику CSS.

Например, вы можете сгенерировать 10 ключевых кадров с именами от встряхнуть1 до встряхнуть10 со случайным преобразованием на 50% и добавить эти стили в стиль заголовка:

var css;
for (x=1;x=10;x++){
   css += '@keyframes shake'+  x.toString()  +' {';
   css += '0% { transform: translate(0px)}';
   css += '50% { transform: translate('+  Math.random()  +'px)}';
   css += '100% { transform: translate(0px)}';
   css += '}';
}
$( "<style>" + css + </style>").appendTo( "head" );

Наконец, вы можете случайным образом назначить каждый ключевой кадр целевым div:

$('.goldrocks-g').each(function(){
   (this).css({"animation": "shake" + Math.random()*10+1 +" 0.1s infinite");
})

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