我正在尝试通过CSS操作外部的.svg文件。
HTML
<body>
<div class="mysvg">
<img src="decho.svg" alt="decho" width="200px"></img>
</div>
</body>
CSS
->CSS
div.mysvg img {
opacity: .3;
transition: opacity 1s linear 0s;
}
div.mysvg img:hover {
opacity: 1;
}
这段代码适用于不透明度,但不适用于fill
或其他类似于stroke
的SVG特定属性。我知道我不能在标签中这样做,但我已经找了几个小时,也没有找到使用svg
或object
正确的方法。基本上,我的问题是,如何实现与我链接的代码相同的结果,但能够操作填充、描边等属性,并且它必须是一个外部文件,而不仅仅是嵌入在html中的内联svg代码。
如果有人能向我展示正确的方法,我将不胜感激。谢谢。
编辑:
我成功地通过在.svg文件本身中添加CSS来做到这一点。它必须紧接着svg
开放标签后面。
<svg ...>
<style type="text/css" media="screen">
<![CDATA[ g { fill: yellow; stroke: black; stroke-width: 1; transition: fill 1s linear 0s; } g:hover { fill: blue; } ]]>
</style>
<g>
<path ...>
</g>
</svg>
如果不将其作为object
插入到HTML中,它是无法工作的。
<object data="decho.svg" type="image/svg+xml">
希望这对未来寻找像我这样的答案的人有所帮助。这就是帮助我的http://www.hongkiat.com/blog/scalable-vector-graphic-css-styling/。