2016-04-09 64 views
0

我正在爲音樂家進行網絡互動測試,並且陷入了困境,互動。拉伸並旋轉SVG圖像的特定部分

用戶應該在五線譜上移動音符並調整它們。 SVG程序以筆記形式呈現,每個筆記都有一個獨立的父級div容器。父div被拖動到五線譜,然後可以調整大小(我正在使用jQuery用戶界面,選項「手柄」設置爲「e」,因此div只能調整到右側)。在這之後,我無法弄清楚如何正確調整其中的SVG音符大小,因爲需要調整大小的內容不是整個SVG,而只是一部分。

SVGs是這樣的:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="32" viewBox="0 0 24 32" class="svgnote" preserveAspectRatio="none"> 
 
    <path d="M0 23.703q0-0.922 0.672-1.797 0.313-0.344 0.766-0.711t1-0.727q0.531-0.25 1.031-0.359t0.953-0.109q0.953 0 1.688 0.531v-17.344h13.578v18.797q0 0.953-0.641 1.781-0.641 0.875-1.703 1.352t-2.047 0.477q-0.859 0-1.563-0.516t-0.703-1.375q0-0.984 0.703-1.797 0.609-0.797 1.719-1.438 0.578-0.25 1.055-0.359t0.93-0.109q0.969 0 1.703 0.531v-15.188h-12.484v16.641q0 0.953-0.641 1.781-0.641 0.875-1.695 1.352t-2.055 0.477q-0.891 0-1.594-0.516-0.672-0.516-0.672-1.375z"></path> 
 
</svg>

Picture example 我添加的圖片,其中上述紅色的身影

  1. 這是一個值得注意的初始狀態;

  2. 上方的紅色箭頭指出了一條線,這是svg的唯一部分,需要伸展到右邊。撇開下方的紅色箭頭 - 注意應該(不知何故?)上下旋轉,以使第三個狀態成爲可能

  3. 是我正在尋找的最終狀態。

我做了什麼: 除了過多的谷歌搜索,沒有太多。我試圖將SVG圖像的「寬度」設置爲父div的「100%」,並添加preserveAspectRatio =「none」,但我所得到的只是難看的拉伸音符。至於旋轉,我甚至沒有一個想法,我應該從什麼開始。
我會永遠感激,如果有人指出我應該谷歌,或者我應該使用的圖書館。我感覺這個解決方案在某個地方很近,我只是因爲在該領域的經驗非常有限而錯過了它。 謝謝大家。

+0

preserveAspectRatio什麼都不做,而不視框 –

+0

需要3'<路...'這個工作。獨立音符x2和連接條。不要試圖伸展,看起來真的很糟糕。而是使用javascript來移動筆記並更新連接欄。 –

回答

0

這是一個10分鐘的黑客攻擊。連接杆需要更多的工作,但要點是使用<symbol>爲您的音樂符號和更好的路徑(例如:多邊形?)連接欄的集合。

<svg xmlns="http://www.w3.org/2000/svg"> 
 
    
 
    <symbol id="note-1" viewBox="0 0 313 340"> 
 
<g xmlns="http://www.w3.org/2000/svg" transform="matrix(-1,0,0,-1,313,340)" id="g11029"> 
 
    <path d="M 303.13715,299.65106 C 299.74131,301.47103 297.93187,304.76561 299.04493,307.24402 C 300.23219,309.88766 304.31194,310.63374 308.15151,308.90939 C 311.99107,307.18503 314.14367,303.63999 312.95641,300.99636 C 311.76914,298.35272 307.6894,297.60664 303.84983,299.33099 C 303.60986,299.43876 303.36355,299.52973 303.13715,299.65106 z " style="opacity:0.9;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.2;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" id="path11031"/> 
 
    <path d="M 299.50465,305.98445 L 299.50465,339.57202" style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="path11033"/> 
 
    </g> 
 
    </symbol> 
 
    
 
    <g class="first" transform="translate(0,20)"> 
 
    <use xlink:href="#note-1" /> 
 
    </g> 
 
    <g class="second" transform="translate(30,10)"> 
 
    <use xlink:href="#note-1" /> 
 
    </g> 
 
    <path stroke-width="4" stroke="black" d="M87,20 L117,10"></path> 
 
    
 
    
 
</svg>