Эффект перемешивания букв с помощью jQuery
В этом уроке мы напишем jQuery плагин, который будет перемешивать содержимое любого DOM элемента — интересный эффект, который может использоваться в заголовках, логотипах и слайд-шоу.
Код
Сначала напишем основу нашего jQuery плагина. Так как мы пишем собственный плагин, поместим его код в файл jquery.shuffleLetters.js, а основную функцию присоединим к объекту $.fn.
(function($){ $.fn.shuffleLetters = function(prop){ // обрабатываем настройки var options = $.extend({ },prop) return this.each(function(){ // основной код плагина }); }; // вспомогательная функция function randomChar(type){ // возвращает случайный символ } })(jQuery);
Рассмотрим вспомогательную функцию randomChar()
. Она принимает один аргумент — type, который может принимать значения “lowerLetter“, “upperLetter” или “symbol“, и возвращает случайный символ.
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)]; }
Теперь напишем основную часть плагина
$.fn.shuffleLetters = function(prop){ var options = $.extend({ "step" : 8, // Сколько раз буква должна меняться "fps" : 25, // Frames Per Second "text" : "" // если не указан, эффект будет применен к содержимому элемента },prop) return this.each(function(){ var el = $(this), str = ""; if(options.text) { str = options.text.split(''); } else { str = el.text().split(''); } var types = [], letters = []; // цикл по всем символам строки for(var i=0;i<str.length;i++){ var ch = str[i]; if(ch == " "){ types[i] = "space"; continue; } else if(/[a-z]/.test(ch)){ types[i] = "lowerLetter"; } else if(/[A-Z]/.test(ch)){ types[i] = "upperLetter"; } else { types[i] = "symbol"; } letters.push(i); } el.html(""); (function shuffle(start){ // этот код запускается options.fps раз в секунду // и обновляет содержимое строки var i, len = letters.length, strCopy = str.slice(0); if(start>len){ return; } for(i=Math.max(start,0); i < len; i++){ if( i < start+options.step){ 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); }); };
Плагин принимает содержимое элемента к которому он был применен или параметр text в качестве аргумента. Далее строка разбивается на символы и определяется тип каждого. Функция shuffle использует setTimeout()
для вызова самой себя и обновления строки.
В демо вы можете использовать собственный текст, вот как это реализовано:
$(function(){ var container = $("#container") userText = $('#userText'); // перемешиваем содержимое #container container.shuffleLetters(); userText.click(function () { userText.val(""); }).bind('keypress',function(e){ if(e.keyCode == 13){ // нажали enter container.shuffleLetters({ "text": userText.val() }); userText.val(""); } }).hide(); // 4 сек пауза setTimeout(function(){ // перемешиваем собственный текст container.shuffleLetters({ "text": "Test it for yourself!" }); userText.val("type anything and hit return..").fadeIn(); },4000); });
Так же этот пример показывает как использовать плагин с собственным параметром text.
Плагин готов!
Куда этот код вставлять, как работать с JQuery? Я установил плагин. Что дальше? Как с этими кодами работать? Помогите пожалуйста.
Определяем вывод:
$(function(){
var schedule = $(«.shuffle»);
schedule.shuffleLetters();
});
И уже непосредственно в теле страницы:
Ваш эффект перемешивания