Я новичок в web. Подскажите как написать скрипт для реализации такого эффекта
Ответ Можно искать в google под ключевым словом shuffle letter effect Или можно использовать готовый плагин jQuery animation Shuffle Letters Effect Либо можно использовать то что я написал снизу и на основе этого написать точную копию того что вам нужно. Upd:Сделал еще похоже на то что в гифке.Можно еще заморочиться и сделать полную копию но это я оставляю вам. Ссылка на исходный код тут Спасибо всем.
(function($) {
$.fn.shuffleLetters = function(prop) {
var options = $.extend({ "step": 8, // How many times should the letters be changed "fps": 25, // Frames Per Second "text": "", // Use this text instead of the contents "callback": function() {} // Run once the animation is complete }, prop)
return this.each(function() { var el = $(this), str = ""
// Preventing parallel animations using a flag if (el.data('animated')) { return true } el.data('animated', true)
// All the work gets done here for (i = Math.max(start, 0) i < len i++) {
// The start argument and options.step limit // the characters we will be working on at once
if (i < start + options.step) { // Generate a random character at thsi position strCopy[letters[i]] = randomChar(types[letters[i]]) } else { strCopy[letters[i]] = "" } }
el.text(strCopy.join(""))
setTimeout(function() {
shuffle(start + 1)
}, 1000 / options.fps)
})(-options.step)
}) }
function randomChar(type) { var pool = ""
if (type == "lowerLetter") { pool = "abcdefghijklmnopqrstuvwxyz0123456789" } else if (type == "upperLetter") { pool = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" } else if (type == "symbol") { pool = ",.?/\\(^)![]{}*&^%$#'\"" }
var arr = pool.split('') return arr[Math.floor(Math.random() * arr.length)] }
})(jQuery)
$(function() { const el = $(".dummy")
$.each( el, function( key, value ) { el.shuffleLetters()
function shuffle(text) { el.shuffleLetters({text: text}) }