Lightning组件中不能直接像html5中写svg,在google上找到一段代码,通过这个组件引用自定义的svg.看了下代码,当在页面渲染完通过js生成拼接成html代码嵌入到页面中.

svgIcon.cmp
<aura:component description="svgIcon"> <aura:attribute name="svgPath" default="" type="String" description="the path for the icon in the static resource, this will be use in a SVG use tag" /> <aura:attribute name="name" default="" type="String" description="Symbol name of icon" /> <aura:attribute name="class" default="" type="String" description="the class of this SVG tag, can be use for CSS purpose" /> <aura:attribute name="containerClass" default="" type="String" description="Container class name for span container of icon" /> <aura:attribute name="category" default="" type="String" description="Category of icon- action, standard, utility etc." /> <aura:attribute name="size" default="" type="String" description="Size of icon-- small, medium, large" /> <aura:attribute name="assistiveText" default="" type="String" description="Description name of icon" /> <span aura:id="container" class="{!v.containerClass}"> <span aura:id="assistiveText" class="slds-assistive-text">{!v.assistiveText}</span> </span> </aura:component>
svgIconHelper.js
({ renderIcon: function(component) { var prefix = "slds-"; var svgns = "http://www.w3.org/2000/svg"; var xlinkns = "http://www.w3.org/1999/xlink"; var size = component.get("v.size"); var name = component.get("v.name"); var classname = component.get("v.class"); var containerclass = component.get("v.containerClass"); var category = component.get("v.category"); var containerClassName = [ prefix+"icon_container", prefix+"icon-"+category+"-"+name, containerclass ].join(' '); component.set("v.containerClass", containerClassName); var svgroot = document.createElementNS(svgns, "svg"); var iconClassName = prefix+"icon "+prefix+"icon--" + size+" "+classname; svgroot.setAttribute("aria-hidden", "true"); svgroot.setAttribute("class", iconClassName); svgroot.setAttribute("name", name); // Add an "href" attribute (using the "xlink" namespace) var shape = document.createElementNS(svgns, "use"); shape.setAttributeNS(xlinkns, "href", component.get("v.svgPath")); svgroot.appendChild(shape); var container = component.find("container").getElement(); container.insertBefore(svgroot, container.firstChild); } })
svgIconRenderer.js
({ render: function(component, helper) { // By default, after the component finished loading data/handling events, // it will call this render function this.superRender() will call the // render function in the parent component. var ret = this.superRender(); // Calls the helper function to append the SVG icon helper.renderIcon(component); return ret; } })