页面上有一个“使用”标记,但我找不到'def'标记

时间:2016-03-20 07:46:27

标签: javascript html css svg

我在website上看到了这些HTML代码:

<a href="https://medium.com/" class="siteNav-logo" data-log-event="home">
    <svg viewBox="0 0 45 45" width="45" height="45" class="svgIcon svgIcon--logoNew svgIcon-size--45px">
        <use class="svgIcon-use svgIcon-use--part0" xlink:href="#svg-logoNew-45px-p0"></use>
        <use class="svgIcon-use svgIcon-use--part1" xlink:href="#svg-logoNew-45px-p1"></use>
        <use class="svgIcon-use svgIcon-use--part2" xlink:href="#svg-logoNew-45px-p2"></use>
        <use class="svgIcon-use svgIcon-use--part3" xlink:href="#svg-logoNew-45px-p3"></use>
    </svg>
    <svg viewBox="0 0 95 45" width="95" height="45" class="svgIcon svgIcon--logoWordmarkNew svgIcon-size--95x45px">
        <use class="svgIcon-use svgIcon-use--part0" xlink:href="#svg-logoWordmarkNew-95x45px-p0"></use>
    </svg><span class="u-textScreenReader">Homepage</span>
</a>

通常当use内有svg标记时,您需要使用defs标记来指定use所引用的特定形状。如下:

<svg>
  <defs>
    <g id="shape">
        <rect x="50" y="50" width="50" height="50" />
        <circle cx="50" cy="50" r="50" />
    </g>
  </defs>

  <use xlink:href="#shape" x="50" y="50" />
  <use xlink:href="#shape" x="200" y="50" />

</svg>

但我在页面上找不到任何defs标记,那么浏览器在哪里找到这些外部svgs(#svg-logoNew-45px-p0#svg-logoNew-45px-p1等)?

1 个答案:

答案 0 :(得分:3)

他们使用<symbol>代码而不是<defs>

<div style="display: none;">
    <svg xmlns="http://www.w3.org/2000/svg">
        <symbol viewBox="-17 18 45 45" id="svg-logoNew-45px-p0">...</symbol>
    </svg>
</div>