例如,我想做以下事情:
.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/