当我们写下这段包含嵌入式 CSS 的 SVG 代码时:
然后,Chrome通过使用标记将“fill:blue”规则应用于第二个矩形(因此第一个矩形为黑色,第二个为蓝色),而Firefox不应用该规则(两个矩形仍然为黑色)。
这是火狐的问题吗?还是有些地方我理解有误?或者标准规定“defs标记应该阻止CSS选择器”?
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 100 100">
<style>
defs rect
{
fill: blue;
}
</style>
<defs>
<rect id="rectangle" x="5" y="10" width="3" height="3"/>
</defs>
<rect x="5" y="5" width="3" height="3"/>
<use xlink:href="#rectangle"/>
</svg>
然后,Chrome通过使用标记将“fill:blue”规则应用于第二个矩形(因此第一个矩形为黑色,第二个为蓝色),而Firefox不应用该规则(两个矩形仍然为黑色)。
这是火狐的问题吗?还是有些地方我理解有误?或者标准规定“defs标记应该阻止CSS选择器”?
defs
作为选择器就像在HTML中使用title
一样。通常情况下,您不会这样做,因为defs
只是一个逻辑容器,而不是您通常会样式化的块。如果这是一个错误,那肯定是可以避免的。defs
中的元素只有在具有id
时才有用,因为它们需要在其他地方引用才能发挥作用,所以您始终可以使用其id引用这样的元素。 - helderdarochadefs rect
应该填充 defs?它会填充 defs 内的所有矩形。如果我有一个在外面的矩形,不想让它被填充,我可以使用defs rect
。 或者你是指另一种方式的“fill”吗? - Xenos