在我的HTML文档中,我有一个<svg>,它包括许多具有id个属性的项,比如icon-x.

然后我想重复使用这些图标,比如

<div class=container>
  <svg><use xlink:href=#icon-x /></svg>
</div>

然而,这种情况下的图标在源SVG中可能有不同的大小.我希望它们适合div.container,但容器中的SVG周围有空格.

我怎么才能告诉<use>我所指向的东西,并知道它定义了<svg>的大小,这样当我像.container svg { width: 100%; height: auto;}做css时,它的工作方式就像<img>标签一样?

推荐答案

  1. icon-x必须是符号或具有ViewBox属性的嵌套SVG

  2. 当使用icon-x时,<use>元素的值是widthheight. 您还可以为<use>指定不同的位置(x和y属性)或不同的填充.

在下一个例子中,我使用的是<symbol>.您可以 Select 使用嵌套的SVG.在这种情况下,你可能想把它放在<defs>

svg{
border:solid;
width:90vh;
}
<svg viewBox="0 0 240 240">
<symbol  id="icon-x"  viewBox="0 0 24 24">
   <path d="M21 16v-2l-8-5v-5.5c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v5.5l-8 5v2l8-2.5v5.5l-2 1.5v1.5l3.5-1 3.5 1v-1.5l-2-1.5v-5.5l8 2.5z"></path>
</symbol>
  <use xlink:href="#icon-x" x="10" y="10" width="150" height="150"/>
  <use xlink:href="#icon-x" x="120" y="120" width="50" height="50" fill="blue"/>
</svg>

Html相关问答推荐

如何通过将项目包裹在迪夫中来保持最右列的对齐方式来对齐项目?

纯CSS语音气泡与半透明背景和边框

让多对图像在各自的div中叠加

覆盖垫子中的边框底部 Select

带下划线的文本应该有延长的下划线,以使其图像悬停

Chatbox底部显示新消息,并向上推送旧消息

如何使用*ngFor将模板从父级传递到子级

使用单个粗体字符串向段落添加页边空白

使用shinyjqui拖放到网格表中

将组件移动到页面底部 Angular

当作为常规图片输入时,Cloudfront分布式图像可显示,但作为背景图像不显示

如何将背景与之前的内容正确对齐

CSS 随着内容宽度的增加而减少填充

在带有换行文本的工具提示中显示溢出文本

使用 sprite 的问题,字符 sprite 中的额外边距

是否可以为长 huxtable 固定头部?

涉及短代码时如何在页面上定位元素?

当我希望它只横向滚动时,可滚动菜单也会上下移动

如何使用 :hover zoom 重叠图像?

是否有一种静态方式可以根据暗模式 Select 一张或另一张图像?