But that's hardly reusable. You'll have to copypaste the (completely nonobvious) markup everywhere you want a triangle. Although it might be possible to use the CSS :before pseudo-element...
<svg height=10 width=20>
<polygon fill=red stroke-width=0
points="0,10 20,10 10,0" />
</svg>
And you can put it in your CSS using a data URI: .triangle {
background: url("data:image/svg+xml;charset=utf-8,<svg height='10' width='20' xmlns='http://www.w3.org/2000/svg'><polygon fill='red' stroke-width='0' points='0,10 20,10 10,0' /></svg>") no-repeat left center;
width: 20px;
height: 10px;
} <img src='triangle.svg'>
really that much harder than <div class='triangle'></div>?You declare a symbol in the defs section of an SVG image and you can instantiate it with use. E.g.
<svg>
<defs>
<symbol id='foo'>
<circle r='5' cx='10' cy='3'/>
</symbol>
</defs>
<use xlink:href='#foo' x='2' y='5'/>
<use xlink:href='#foo' x='10' y='10' fill='red' stroke='blue'/>
</svg>
(does not actually work, because namespaces are missing and the symbol likely is missing things like a viewbox, but just to get the general idea across)