代码之家  ›  专栏  ›  技术社区  ›  HandiworkNYC.com

Raphael JS在具有指定类的所有元素中绘制圆

  •  3
  • HandiworkNYC.com  · 技术社区  · 15 年前

    我刚刚发现了拉斐尔,很喜欢它,但我不是一个Javascript ER。现在,我有三段重复的代码,在三个不同的分区中绘制相同的圆。在Raphael中制作画布的默认设置是按ID查找元素,但我希望有一组变量在所有具有类“circle”的div中绘制圆。我认为必须有一种更有效的编码方法。下面是我现在使用的代码:

    window.onload = function () {
        var paper = Raphael("c1", 26, 26); /* Make canvas 26*26px in div id "c1" */
        var circle = paper.circle(13, 13, 10.5); /* Draw circle at the center of the canvas with radius 10.5  */
        circle.attr("stroke", "#f1f1f1");
        circle.attr("stroke-width", 2);
        var text = paper.text(13, 13, "1"); /* Print text "1" inside the circle  */
        text.attr({'font-size': 15, 'font-family': 'FranklinGothicFSCondensed-1, FranklinGothicFSCondensed-2'});
        text.attr("fill", "#f1f1f1");
    
        var paper2 = Raphael("c2", 26, 26);
        var circle2 = paper2.circle(13, 13, 10.5);
        circle2.attr("stroke", "#f1f1f1");
        circle2.attr("stroke-width", 2);
        var text2 = paper2.text(12, 13, "2");
        text2.attr({'font-size': 15, 'font-family': 'FranklinGothicFSCondensed-1, FranklinGothicFSCondensed-2'});
        text2.attr("fill", "#f1f1f1");
    
        var paper3 = Raphael("c3", 26, 26);
        var circle3 = paper3.circle(13, 13, 10.5);
        circle3.attr("stroke", "#f1f1f1");
        circle3.attr("stroke-width", 2);
        var text3 = paper3.text(12, 13, "3");
        text3.attr({'font-size': 15, 'font-family': 'FranklinGothicFSCondensed-1, FranklinGothicFSCondensed-2'});
        text3.attr("fill", "#f1f1f1");
    };
    

    测试地点是@ http://jesserosenfield.com/fluid/test.html

    非常感谢你的帮助!

    1 回复  |  直到 15 年前
        1
  •  8
  •   agscala    15 年前

    定义一个函数,该函数接受DIV的参数,以便可以自动执行该过程:

    function drawcircle(div, text) { 
        var paper3 = Raphael(div, 26, 26); //<<
        var circle3 = paper3.circle(13, 13, 10.5);
        circle3.attr("stroke", "#f1f1f1");
        circle3.attr("stroke-width", 2);
        var text3 = paper3.text(12, 13, text); //<<
        text3.attr({'font-size': 15, 'font-family': 'FranklinGothicFSCondensed-1, FranklinGothicFSCondensed-2'});
        text3.attr("fill", "#f1f1f1");
    }
    

    然后在您的窗口中加载:

    window.onload = function () {
        drawcircle("c1", "1");
        drawcircle("c2", "2");
        drawcircle("c3", "3");
    };