Как упоминалось в других ответах, вы можете использовать поведения DHMTL , чтобы применить любой стиль, указанный в вашей таблице стилей, к элементу VML, так как поведение поддерживается от IE5 до IE9.
Начните с создания файла HTC, например: 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>
Затем примените его к своим элементам VML. Для вашего конкретного примера вы бы использовали:
<style>
v\:path
{
behavior: url(vmlcss.htc);
}
</style>
Наконец, укажите стили, как показано в вашем примере:
.myRedPath
{
fillcolor: red;
strokecolor: yellow;
}
Возможно, вы захотите изменить файл поведения, добавив поддержку всех атрибутов VML .
Можно использовать такую технику для написания библиотеки, которая рисует фигуры с использованием VML или SVG (в зависимости от поддержки браузера) и позволяет создавать стили с помощью CSS. Поддержка стилей SVG затем может быть добавлена к объектам VML с использованием такого файла поведения путем сопоставления каждого стиля SVG с соответствующими атрибутами VML.