适合用来做前台页面还是后台的管理页面?使用过的来说点吧!

解决方案 »

  1.   

    已经更名为 JX,看那特效,主要是服务于前端的项目主页: http://alloyteam.github.com/JX/例子:
    <!DOCTYPE HTML> 
    <html> 
    <head> 
    <meta charset="utf-8" />
    <title>Jx About</title> 
    <meta http-equiv="imagetoolbar" content="no"> 
    <style type="text/css"> 
    html { 
    overflow: hidden; 
    width: 100%; 
    height: 100%; 

    body { 
    background: -webkit-gradient(linear, 0 0, 0 900, from(#025695), to(#ADD1E3)) repeat scroll 0 0 transparent;
    background: -moz-linear-gradient(center top, #025695, #ADD1E3) repeat scroll 0 0 transparent;
    background: -o-linear-gradient(top, #025695, #ADD1E3);
    filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#025695',endColorStr='#ADD1E3',gradientType='0');
    width: 100%; 
    height: 100%; 
    color: #fff; 
    margin: 0;
    padding: 0;

    .full {

    width: 100%; 
    height: 100%; 
    }
    #frm { 
    position: absolute; 
    width: 100%; 
    height: 100%; 
    left: 5%; 
    top: 60px; 
    font-size: 2em; 
    font-weight: bold; 
    font-family: verdana, arial; 
    overflow: hidden; 
    padding: 0.5em; 

    #frm span { 
    position: relative; 
    text-align: center; 
    z-index: 1; 

    #mtxform { 
    position: relative; 
    z-index: 10; 

    .hidden { 
    visibility: hidden; 

    h1 {
    font-size: 2.5em; 
    font-weight: bold; 
    font-family: verdana, arial; 
    color: #fff;
    border-bottom: 1px solid #eee;
    width: 90%;
    line-height: 1.8;
    margin: 0 auto;
    }
    </style> 
     
    <script type="text/javascript"> 
    var mtx = function () { 
    /* ==== private variables & methods ==== */ 
    var stop = false; 
    var frm, lineDelay, charDelay; 
    var colorText, colorMatch, colorGhost, elapsedTime; 
    var lineIndex = 0; 
    var lineChar  = []; 
    var animStack = []; 
    var colorStack = []; 
    /* ==== rgb color ==== */ 
    function colorRGB (c) { 
    return 'rgb(' 
    +Math.round(Math.min(255, Math.max(0, c[0])))+',' 
    +Math.round(Math.min(255, Math.max(0, c[1])))+',' 
    +Math.round(Math.min(255, Math.max(0, c[2])))+')'; 

    /* ==== Easing functions ==== */ 
    function Ease () {} 
    Ease.prototype = { 
    ease : function () { 
    this.m += this.s; 
    this.x0 += (this.d * this.m * .0025); 
    if (this.m == 20) this.s = -1; 
    return this.x0; 
    }, 
    init : function (x0, x1) { 
    this.m = 0; 
    this.s = 1; 
    this.d = x1 - x0; 
    this.x0 = x0; 


     
    /* ==== Load Lines ==== */ 
    function loadLines () { 
    // read text from HTML form 
    text = document.forms.mtxform.text.value.split("\n"); 
    // loop through all lines 
    for (var j = 0; j < text.length; j++) { 
    var t = text[j]; 
    if (t) { 
    var n = t.length; 
    lineChar[j] = []; 
    // first pass: create characters capture RELATIVE offset coordinates 
    for (var i = 0; i < n; i++) 
    lineChar[j][i] = new Character(t.charAt(i), j); 
    // second pass: convert to absolute position 
    for (var i = 0, o; o = lineChar[j][i]; i++) { 
    if (o.c == "|") { 
    // remove spaces 
    lineChar[j].splice(i, 1); 
    frm.removeChild(o.o); 
    i--; 
    } else { 
    // convert to absolute position and render 
    o.o.style.position = "absolute"; 
    o.o.style.color = colorRGB(colorText); 
    o.moveHTML(); 
    // push first line in animation stack 
    if (j == 0) pushAnim (o, charDelay * i); 





    /* ==== Character Constructor ==== */ 
    function Character (c, line) { 
    if (c == " ") c = "|"; 
    this.c = c; 
    // create HTML element and append the the container 
    this.o = document.createElement("span"); 
    this.o.innerHTML = c; 
    this.o.style.zIndex = 2; 
    frm.appendChild(this.o); 
    // capture relative offset positions ! 
    this.x0 = this.o.offsetLeft; 
    this.y0 = -this.o.offsetHeight * 1.5; 
    this.x1 = this.x0; 
    this.x2 = this.x0; 
    this.y1 = (line + 1) * this.o.offsetHeight; 
    this.y2 = frm.offsetHeight; 
    this.mx = new Ease(); 
    this.my = new Ease(); 
    this.c0 = [colorText[0], colorText[1], colorText[2]]; 

    /* ==== Character functions ==== */ 
    Character.prototype = { 
    // ---- character animation ---- 
    anim : function (i) { 
    // temporization 
    if (this.delay > 0) { 
    if (elapsedTime) 
    this.delay -= new Date().getTime() - elapsedTime; 
    } else { 
    // moving 
    this.x0 = this.mx.ease(); 
    this.y0 = this.my.ease(); 
    this.moveHTML(); 
    if (!this.my.m && !this.mx.m) { 
    // remove from stack 
    animStack.splice(i, 1); 
    // remove dead characters 
    if (this.off) frm.removeChild(this.o); 


    }, 
    // ----- color fading ------ 
    color : function (i) { 
    this.c0[0] += this.cr[0]; 
    this.c0[1] += this.cr[1]; 
    this.c0[2] += this.cr[2]; 
    this.ci++; 
    this.o.style.color = colorRGB(this.c0); 
    if (this.ci >= this.cs) 
    colorStack.splice(i, 1); 
    }, 
    // ----- HTML positioning ----- 
    moveHTML : function () { 
    this.o.style.left = Math.round(this.x0) + "px"; 
    this.o.style.top  = Math.round(this.y0) + "px"; 
    }, 
    // ----- init color fading ------ 
    colorFade : function (c1, steps) { 
    this.cs = steps; 
    this.cr = [(c1[0] - this.c0[0]) / steps, (c1[1] - this.c0[1]) / steps, (c1[2] - this.c0[2]) / steps]; 
    if (this.cr[0] != 0 || this.cr[1] != 0 || this.cr[2] != 0){ 
    this.ci = 0; 
    colorStack.push (this); 



    /* ==== push character in the animation stack ==== */ 
    function pushAnim (o, delay) { 
    // init ease 
    o.mx.init(o.x0, o.x1); 
    o.my.init(o.y0, o.y1); 
    o.delay = delay; 
    // push stack 
    animStack.push(o); 

    /* ==== next line ==== */ 
    function nextLine () { 
    if (lineIndex < lineChar.length - 1) { 
    // display shadow text 
    for (var i = 0, o; o = lineChar[lineIndex][i]; i++) { 
    var s = o.o.cloneNode(true); 
    s.style.zIndex = 1; 
    s.style.color = colorRGB(colorGhost); 
    frm.appendChild(s); 

    // matching next line characters 
    for (var i = 0, t; t = lineChar[lineIndex + 1][i]; i++) { 
    for (var j = 0, o; o = lineChar[lineIndex][j]; j++) { 
    if (o.c == t.c) { 
    // colors 
    t.colorFade(colorMatch, o.match ? 1 : 40); 
    t.match = true; 
    // swap characters 
    t.x0 = o.x0; 
    t.y0 = o.y0; 
    t.moveHTML(); 
    // remove redundant character 
    frm.removeChild(o.o); 
    lineChar[lineIndex].splice(j, 1); 
    break; 



    // take off redundant characters 
    for (var i = 0, o; o = lineChar[lineIndex][i]; i++) { 
    // set target position (off frame) 
    o.y1 = frm.offsetHeight; 
    o.off = true; 
    o.match = false; 
    o.colorFade (colorText, 40); 
    // push in animation stack 
    pushAnim (o, (lineDelay * .8) + charDelay * i); 


    // push next line in animation stack 
    lineIndex++; 
    if (lineIndex < lineChar.length) { 
    for (var i = 0, o; o = lineChar[lineIndex][i]; i++) 
    pushAnim (o, lineDelay + charDelay * i); 


     
    /* ==== main animation loop ==== */ 
    function main() { 
    //  characters 
    var n = animStack.length; 
    if (n) { 
    var i = n; 
    while (i--) 
    animStack[i].anim(i); 
    } else nextLine (); 
    // colors 
    var i = colorStack.length; 
    while (i--) 
    colorStack[i].color(i); 
    // get elapsed time and loop 
    elapsedTime = new Date().getTime(); 
    setTimeout(main, 16); 

     
    /* //////////// ==== public methods ==== //////////// */ 
    return { 
    /* ==== initialize script ==== */ 
    init : function (cont, t1, t2, c1, c2, c3) { 
    // container 
    frm = document.getElementById(cont); 
    lineDelay = t1; 
    charDelay = t2; 
    colorText = c1; 
    colorMatch = c2; 
    colorGhost = c3; 
    loadLines(); 
    main(); 
    }, 
    changeText : function () { 
    document.getElementById("show").className = ""; 
    document.getElementById("inputext").className = "hidden"; 
    lineChar  = []; 
    animStack = []; 
    colorStack = []; 
    frm.innerHTML = ""; 
    lineIndex = 0; 
    elapsedTime = 0; 
    loadLines(); 
    frm.focus(); 
    }

    }(); 
     
     
    /* ==== init text ==== */ 
    onload = function () { 
    document.getElementById('frm').style['height'] = document.documentElement.clientHeight - 60 + 'px';
    // mtx.init( el, linesDelay, charsDelay, cText, cMatch, cGhost); 
    mtx.init("frm", 800, 150, [255,255,255], [255,64,0], [44,44,44]); 

     
    </script> 
    </head> 
     
    <body> <div id="doc" class="doc full"><h1>About</h1> 
    <div id="frm"></div> 
     
    <form id="mtxform" name="mtxform"> 
    <span id="inputext" class="hidden"> 
    <textarea rows="6" cols="46" id="text" name="text"> 
    JX
    Javascript eXtension tools
    Don't Repeat Yourself!
    --by Alloy Team
    </textarea>
    </span> 
    </form> </div>
     
    </body> 
    </html>
      

  2.   

    javascript extension tools webQQ和Q+都是用的这个
    TX公开的API比较少 其实我是想求多一点资料,1楼的资料都已经看过了
      

  3.   

    刚看了下,感觉和kissy有几分相仿,颗粒化,可以学习一下。
      

  4.   

    腾讯真的有用,这个感觉得根据自己的功能需求以及这个框架的特性来定吧!
    没研究过JET这个框架.