raphael.js arrow颜色修改

官方默认的arrow-end属性,多条线的话箭头颜色都是跟最后一根设置箭头的颜色一样,看到网上一篇文章思路影响,但是那篇文章又没有完整示例,所以我自己搞了一个完整示例。
1、默认情况下代码:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>绘制箭头测试</title>
    <script src="jquery.min.js"></script>
    <script src="raphael.js"></script>
    <script>
        $(function () {
            var paper = Raphael(0, 0, 3200, 2000);
            var line1 = paper.path("M100,200 L 200,400").attr({
                stroke: "red",
                "stroke-width": "2px",
                "arrow-end": "classic-wide-long"

            });
            var line2 = paper.path("M500,200 L 600,400").attr({
                stroke: "blue",
                "stroke-width": "2px",
                "arrow-end": "classic-wide-long"
            });
        });
    </script>
</head>
<body>

</body>
</html>

示例图如下:
这里写图片描述
结果箭头颜色一致了。
2、研究下箭头颜色的引用,发现了marker-end属性:
这里写图片描述
那么发现引用的是#raphael-marker-end-classic55的属性,那么#raphael-marker-end-classic55又从哪里来呢?
看下图,也是svg代码里面定义的:
这里写图片描述
3、修改下直线引用的marker-end改成我们自定义的的marker-end即可,代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>绘制箭头测试</title>
    <script src="jquery.min.js"></script>
    <script src="raphael.js"></script>
    <script>
        $(function () {
            $('body').append('<svg>'+
                    '<defs style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">'+
                    '<marker id="raphael-marker-endclassic-red" markerHeight="5" markerWidth="5" orient="auto" refX="2.5" refY="2.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><use xmlns:xlink="" xlink:href="#raphael-marker-classic" transform="rotate(180 2.5 2.5) scale(1,1)" stroke-width="1.0000" fill="red" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></use></marker>'+
                    '<marker id="raphael-marker-endclassic-green" markerHeight="5" markerWidth="5" orient="auto" refX="2.5" refY="2.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><use xmlns:xlink="" xlink:href="#raphael-marker-classic" transform="rotate(180 2.5 2.5) scale(1,1)" stroke-width="1.0000" fill="green" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></use></marker>'+
                    '</defs>'+
                    '</svg>');
            var paper = Raphael(0, 0, 3200, 2000);
            var line1 = paper.path("M100,200 L 200,400").attr({
                stroke: "red",
                "stroke-width": "2px",
                "arrow-end": "classic-wide-long"

            });
            var line2 = paper.path("M500,200 L 600,400").attr({
                stroke: "blue",
                "stroke-width": "2px",
                "arrow-end": "classic-wide-long"
            });
            if (Raphael.svg) {

                line1.node.attributes["marker-end"].value = "url(#raphael-marker-endclassic-red)";

                line2.node.attributes["marker-end"].value = "url(#raphael-marker-endclassic-green)";
            }
        });
    </script>
</head>
<body>

</body>
</html>

示例如下:
这里写图片描述
大功告成。我们需要提前定义我们所需要的marker-end在body下,再次绘图的时候只需要引用即可,修改marker-end中use的fill即是颜色更替。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值