为什么 svg 在引导媒体对象中不起作用?

use*_*782 2 html css svg twitter-bootstrap twitter-bootstrap-3

我一直在尝试在引导媒体对象中使用 svg ,发现如果未明确设置宽度,它不会采用最小宽度。例如,考虑带有 png 图像的简单情况:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<div class="media">
  <div class="media-left">
    <a href="#">
      <img class="media-object" src="https://www.tutorialspoint.com/bootstrap/images/64.jpg" alt="...">
    </a>
  </div>
  <div class="media-body">
    <h4 class="media-heading">Media heading</h4>
    sample text. This is some sample text. This is some sample text. This is some sample text. This is some s
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

使用的 png 图像的默认宽度为 64 像素,因此它显示为 64 像素宽的图像。现在考虑使用 svg img 的相同示例:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<div class="media">
  <div class="media-left">
    <a href="#">
      <img class="media-object" src="http://www.iconninja.com/files/93/412/839/social-online-media-pay-paypay-pal-icon.svg" alt="...">
    </a>
  </div>
  <div class="media-body">
    <h4 class="media-heading">Media heading</h4>
    The random text that shows that the text that was suypposed to be the text.
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我们可以看到,在第二个示例中,svg 并不像 png 或 jpg 那样采用最小默认宽度。另一方面,如果我只是在 body 标签中有两个图像标签,第一个图像是 png,第二个图像是 svg,并且两个图像都没有显式设置宽度,那么两个图像都采用默认宽度。

我的问题是为什么在引导媒体对象中 svg 采用默认宽度?

Dek*_*kel 5

图像 ( gif/jpg/png) 是基于像素的,默认情况下它们具有width/height值,而 SVG 是矢量对象,并且width/height取决于谁/什么显示它们。

在您的示例中 - SVG 具有 viewBox 32 x 32(定义要显示的画布部分)。

您可以在参考中阅读有关 viewBox 的更多信息:
https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Positions

如果您想可以在 内定义width和:heightsvg

<svg width="64" height="64"...> ... </svg>
Run Code Online (Sandbox Code Playgroud)

这是一个工作示例(请注意,我在这里使用了内联 svg):

<svg width="64" height="64"...> ... </svg>
Run Code Online (Sandbox Code Playgroud)