例如,我想做以下事情:

.myRedPath {
    fillcolor: red;
}

...

<v:path class="myRedPath" v="..."/>

用红色填充我的路径VML元素的填充和描边属性的颜色和不透明度是否可行?如果是这样,怎么办?

最佳答案

如其他答案所述,您可以使用DHMTL behaviors将样式表中指定的任何样式应用于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;
}

您可能需要修改行为文件以添加对all VML attributes的支持。

可以使用这种技术来编写一个库,该库使用VML或SVG(取决于浏览器的支持)绘制形状,并允许通过CSS进行样式设置。然后,可以通过将每个SVG样式映射到相应的VML属性,使用这种行为文件将对SVG styles的支持添加到VML对象中。

关于css - 是否可以使用CSS在VML路径上设置填充和描边颜色以及不透明度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8661154/

10-09 13:23