我使用svg繪製折線圖,並要求應用漸變。對於每一行,我使用一個路徑元素並將筆畫設置爲我的一個lineargradient元素。完美水平路徑的SVG漸變
這對一切都很好,但純粹的水平線 - 在這種情況下,我根本沒有獲得任何顏色。
我已示出該問題的小提琴:http://jsfiddle.net/b6EQT/
<svg>
<defs>
<linearGradient id="grad" x1="0%" x2="100%" y1="0%" y2="0%">
<stop class="" offset="0%" style="stop-color: red;"></stop>
<stop class="" offset="33%" style="stop-color: yellow;"></stop>
<stop class="" offset="66%" style="stop-color: pink;"></stop>
<stop class="" offset="100%" style="stop-color: blue"></stop>
</linearGradient>
</defs>
<-- Gradient not applied -->
<path stroke="url(#grad)" d="M20,20L400,20" style="stroke-width: 10px;"></path>
<-- Gradient applied since height of 1px -->
<path stroke="url(#grad)" d="M20,40L400,41" style="stroke-width: 10px;"></path>
<-- Gradient applied because of fake initial "move to" -->
<path stroke="url(#grad)" d="M-1,-1,M20,60L400,60" style="stroke-width: 10px;"></path>
</svg>
純水平線(第一路徑)不出現,而第二個(在y中略有變化)一樣。
我嘗試了一些小技巧來開始 - 在開始時放置一個假M-1,-1,這似乎解決了IE和Chrome中的問題,但不是Firefox。這讓我覺得我在理解SVG漸變和路徑時錯過了一些東西。有沒有辦法讓這個工作?
這些圖表是自動生成的,所以不管它是一個完美的水平或不依賴於數據。 userSpaceOnUse單位完美工作,謝謝! – XwipeoutX
@XwipeoutX如果您的路徑是從您的數據動態生成的,那麼選項可能會使路徑抖動一點點,以致它們不完全水平。這樣你可以保留objectBoundingBox,這可能更適合你,因爲停靠點的百分比屬於路徑本身 –