0

我网站上的徽标是 SVG。

我找到了一些 javascript,使我的内联 SVG 徽标可编辑:

/*
     * Replace all SVG images with inline SVG
     */
        jQuery('img.svg').each(function(){
            var $img = jQuery(this);
            var imgID = $img.attr('id');
            var imgClass = $img.attr('class');
            var imgURL = $img.attr('src');

            jQuery.get(imgURL, function(data) {
                // Get the SVG tag, ignore the rest
                var $svg = jQuery(data).find('svg');

                // Add replaced image's ID to the new SVG
                if(typeof imgID !== 'undefined') {
                    $svg = $svg.attr('id', imgID);
                }
                // Add replaced image's classes to the new SVG
                if(typeof imgClass !== 'undefined') {
                    $svg = $svg.attr('class', imgClass+' replaced-svg');
                }

                // Remove any invalid XML tags as per http://validator.w3.org
                $svg = $svg.removeAttr('xmlns:a');

                // Replace image with new SVG
                $img.replaceWith($svg);

            }, 'xml');

        });

现在我可以用 css 更改颜色,那么是否可以将它与 jQuery 插件 skrollr 一起使用:https ://github.com/Prinzhorn/skrollr/tree/master/examples ,所以我可以更改徽标的颜色向下滚动时?

我试图将它添加到 SVG 但它不起作用:data-0="fill:rgb(255,0,0);" data-500="fill:rgb(0,0,255);"

下面是它的小提琴。

http://jsfiddle.net/NEhmK/1/

4

1 回答 1

0

你在哪里添加data-0="fill:rgb(255,0,0);" data-100="fill:rgb(0,0,255);"属性?<path>如果我将它们添加到所有元素中,它似乎对我有用,即

<path data-0="fill:rgb(255,0,0);" data-100="fill:rgb(0,0,255);" fill="#6EC5CB"...

如果您将它们添加到其他地方,例如 CSS 或<g>我认为库不会覆盖路径上已经存在的填充。

如果要将属性添加到路径标记,则调用document.rootElement.getElementsByTagName("path")并循环遍历结果。例如

var paths = document.documentElement.getElementsByTagName("path"); 
for (var i = 0; i < paths.length; i++) { 
    paths[i].setAttribute("data-0", "fill:rgb(255,0,0);"); 
    paths[i].setAttribute("data-100", "fill:rgb(0,0,255);"); 
}

或者从路径中删除所有现有的填充属性。

于 2013-09-07T22:46:51.987 回答