zoukankan      html  css  js  c++  java
  • 随机字符变换效果的jQuery插件开发教程

    来源:tutorialzine.com         编译:GBin1.com

    在这篇快速的jQuery插件开发教程中,我们将创建一个jQuery插件用来随机排序显示任何一个DOM元素的文字内容 -这将会是一个非常有趣的效果,可以用在标题,logo及其幻灯效果中。

    随机字符变换效果的jQuery插件开发教程

    在线演示       在线下载

    代码片段

    那么第一部呢,我们将开发jQuery插件的基本架构。我们将把代码放入一个自运行的方法中,并且扩展$.fn.

    assets/js/jquery.shuffleLetters.js

    (function($){
        $.fn.shuffleLetters = function(prop){
            // Handling default arguments
            var options = $.extend({
                // Default arguments
            },prop)
            return this.each(function(){
                // The main plugin code goes here
            });
        };
        // A helper function
        function randomChar(type){
            // Generate and return a random character
        }
    })(jQuery);

    下一步我们将关注与randomChar()方法。它将会接受一个类型参数(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)];
    }

    我们本应该使用一个简单的字符池来保存所有的字符,但是这样会有更好效果。

    现在我们来书写插件的body部分:

    $.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
        },prop)
    
        return this.each(function(){
            var el = $(this),
                str = "";
            if(options.text) {
                str = options.text.split('');
            }
            else {
                str = el.text().split('');
            }
            // The types array holds the type for each character;
            // Letters holds the positions of non-space characters;
            var types = [],
                letters = [];
            // Looping through all the chars of the string
            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("");            
            // Self executing named function expression:
            (function shuffle(start){
                // This code is run options.fps times per second
                // and updates the contents of the page element
                var i,
                    len = letters.length,
                    strCopy = str.slice(0);    // Fresh copy of the string
                if(start>len){
                    return;
                }
                // 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 this 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);
        });
    };

    这 个插件将可以接受被调用的DOM元素的内容,或者当作一个参数传入的对象的text属性。然后它分割字符串到字符,并且决定使用的类型。这个 shuffle功能使用setTimeout()来调用自己并且随机生成字符串,更新DOM元素。如果你不清楚setTimeout()的使用,可以参考 这篇文章:http://www.gbin1.com/technology/jqueryhowto/fadeoutonebyone/ , 调用seTimeout方法可以帮助你按特定时间间隔执行某些操作。

    原文来自:随机字符变换效果的jQuery插件开发教程

  • 相关阅读:
    装饰设计模式
    Enum的基本使用
    java根据文件流判断文件类型(后缀名)
    Java正则表达式的用法
    java遍历Map
    java操作json
    struts2+ajax+jquery
    Hibernate注解
    oracle经典建表语句--scott建表
    Struts2 ui标签
  • 原文地址:https://www.cnblogs.com/gbin1/p/2221026.html
Copyright © 2011-2022 走看看