【发布时间】:2016-04-01 04:10:28
【问题描述】:
我有以下代码:
<body class="active">
<object data="css/svg/circle.svg" type="image/svg+xml">
<p> Your browser doesn't support SVG.</p>
</object>
</body>
SVG 很简单:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet href="../style.css" type="text/css"?>
<svg id="circle" height="100" width="100">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>
<body> 上的 active 类是通过 javascript 切换的。然后我有以下 CSS:
#circle {
opacity: 1;
}
.active #circle {
opacity: 0.5;
}
问题是,如果我添加带有 <object> 标记的 SVG,第二个选择器 active #circle 将不起作用。如果我将 SVG 内联,那么它可以工作。请注意,我也在 SVG 文件中包含了 CSS。
我想使用<object>,因为真正的 SVG 并不是那么简单,所以我的 html 会变得凌乱。有没有办法做到这一点?
提前致谢,
【问题讨论】:
-
“有没有办法做到这一点?” - 不是通过 CSS。
object创建一个单独的“文档”,与 iframe 几乎相同。而且您也不能根据父页面的 body 元素具有的类选择“进入”iframe。 -
您是否尝试过使用
<use>元素?你会像这样使用它:<svg><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="path/to/svg-file.svg#circle"></use></svg>.
标签: css svg css-selectors