簡體   English   中英

動態設置SVG prepareAspectRatio屬性

[英]Setting SVG preserveAspectRatio attribute dynamically

如果您有一個Angular組件通過引用一個打包文件中的符號來使用svg文件:

svg實例

<svg>
  <use xlink:href="#my-symbol"></use>
</svg>

出現在導入文件中的符號

<symbol id="my-symbol" viewBox="0 0 24 24">
  <title>my-symbol</title>
  <path class="path1" d=" ... data here ..."></path>
</symbol>

為了獲得對縮放行為的控制,顯然每個符號元素都應相應地設置preserveAspectRatio="..."

如果我想這樣做動態,取值preserveAspectRatio從組件實例HTML輸入?

就像是:

虛構的我圖標模板

<my-icon preserveAR="alignMeetOrSlice">
  <svg preserveAspectRatio="{{preserveAR}}">
    <use xlink:href="#my-symbol"></use>
  </svg>
</my-icon>

所需的渲染:

<svg>
  <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://somedomain.com/my.svg#my-symbol"></use>
    #shadow-root (user agent)
       <svg id="my-symbol" viewBox="0 0 24 24"> <!-- attribute should go to this svg -->
            ...
        </svg>
</svg>

我在容器上嘗試使用querySelector('symbol') -但返回空結果。

是否有進入影子根目錄並修改symbol元素的方法?

在JS中,您可以對svg.preserveAspectRatio.baseVal.align使用直接分配。 代替preserveAspectRatio="none"的HTML可以寫svg.preserveAspectRatio.baseVal.align=1svg.setAttribute('preserveAspectRatio', 'none'); JS腳本中。

此處顯示示例:

在這里可以看到AspectRatio的可用值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM