Object 为什么';t一个HTML锚定标记包装一个可伸缩的SVG<;对象>;?

Object 为什么';t一个HTML锚定标记包装一个可伸缩的SVG<;对象>;?,object,svg,viewbox,Object,Svg,Viewbox,我使用SVG文件本身中的preserveAspectRatio和viewBox属性创建了一个可伸缩的SVG对象: <svg … width="800" height="800" preserveAspectRatio="xMinYMin meet" viewBox="0 0 800 800" … 问题是锚定标记没有环绕对象 任何人有什么想法吗?向锚定添加显示:block似乎可以解决我的问题。我认为@CBroe有:SVG可以是交互式内容,因此它不应该被锚定元素包装

我使用SVG文件本身中的
preserveAspectRatio
viewBox
属性创建了一个可伸缩的SVG对象:

<svg
  …
  width="800"
  height="800"
  preserveAspectRatio="xMinYMin meet"
  viewBox="0 0 800 800"
  …
问题是锚定标记没有环绕对象


任何人有什么想法吗?

向锚定添加
显示:block
似乎可以解决我的问题。

我认为@CBroe有:SVG可以是交互式内容,因此它不应该被锚定元素包装:

:“内容模型:透明,但不能有交互式内容子体。”


事实上,我找到了一个完全有效的解决方案

它是
内联块
和伪元素的组合

示例解决方案的Thomas Quayle(复制如下)

a.svg{
位置:相对位置;
显示:内联块;
宽度:25%;
}
a、 svg:之后{
内容:“;
位置:绝对位置;
排名:0;
右:0;
底部:0;
左:0;
}
反对{
宽度:100%;
}
SVG链接演示
从示例复制

这有多酷?

:“内容模型:透明,但不能有后代。”嗯,我能看到这些词,但它们没有意义!用简单的英语来说,为什么
的行为会与
不同?因为一个对象可以包含交互式内容(甚至SVG本身也可以是交互式内容)。如果我将锚定标记样式设置为
显示:block
,它会将锚定标记拉伸到页面的整个宽度,而不是50%(即围绕对象):(因此,将其设为浮动块或内联块我尝试了
float:left
display:inline块
,它们的效果相同。
<a>
  <object type="image/svg+xml" data="smiley.svg">
  </object>
</a>
object {
  max-width: 100%;
  width: 50%;
}