Como se menciona en otras respuestas, puede usar DHMTL behaviors para aplicar cualquier estilo especificado en su hoja de estilos a su elemento VML, ya que los comportamientos son compatibles de IE5 a IE9.
de inicio mediante la creación de un archivo de HTC, por ejemplo: vmlcss.htc:
<PUBLIC:COMPONENT>
<PUBLIC:ATTACH EVENT="onpropertychange" ONEVENT="onpropertychange()" />
<PUBLIC:METHOD NAME="refresh" />
<SCRIPT LANGUAGE="JScript">
function onpropertychange()
{
if (event.propertyName == "className")
{
refresh();
}
}
function refresh()
{
// Set any VML attribute you may define in your stylesheet
element.fillcolor = element.currentStyle["fillcolor"];
element.strokecolor = element.currentStyle["strokecolor"];
// etc.
}
refresh();
</SCRIPT>
</PUBLIC:COMPONENT>
luego aplicarlo a sus elementos VML. Para su ejemplo particular, se debería utilizar:
<style>
v\:path
{
behavior: url(vmlcss.htc);
}
</style>
Por último, especifique los estilos como se muestra en el ejemplo:
.myRedPath
{
fillcolor: red;
strokecolor: yellow;
}
es posible que desee modificar el archivo de comportamiento para añadir soporte para all VML attributes.
Se podría utilizar tal técnica para escribir una biblioteca que dibuje formas usando VML o SVG (dependiendo del soporte del navegador) y permite el estilo a través de CSS. La compatibilidad con SVG styles podría agregarse a los objetos VML utilizando dicho archivo de comportamiento asignando cada estilo SVG a los atributos VML correspondientes.
¿Por qué usar VML cuando puede usar Canvas? –
Probablemente por compatibilidad con versiones anteriores. Aunque sugeriría usar Raphael en su lugar ya que abstrae las incompatibilidades del navegador. – Hyangelo
Sí, lamentablemente tengo que admitir versiones anteriores de IE. Raphael es genial, pero una de las cosas que parece faltar es que solo se pueden aplicar estilos a formas explícitamente, no a través de CSS. Asumo que la respuesta a estas preguntas es "no, no puedes hacer eso", pero tengo la esperanza de que me falta algo :) –