我試圖在SVG中實現多行可編輯文本框。我在http://jsfiddle.net/ca4d3/以下代碼:SVG中的多行可編輯文本框
<svg width="1000" height="1000" overflow="scroll">
<g transform="rotate(5)">
<rect width="300" height="400" fill="#22DD22" fill-opacity="0.5"/>
</g>
<foreignObject x="10" y="10" overflow="visible" width="10000" height="10000"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<p style="display:table-cell;padding:10px;border:1px solid red;
background-color:white;opacity:0.5;font-family:Verdana;
font-size:20px;white-space: pre;
word-wrap: normal; overflow: visible; overflow-y: visible;
overflow-x:visible;" contentEditable="true"
xmlns="http://www.w3.org/1999/xhtml">
Write here some text.
Be smart and select some word.
If you wanna be really COOL,
paste here something cool!
</p>
</foreignObject>
</svg>
在最新的Chrome,Safari和Firefox代碼工作在某些方面,但在Opera和IE 9不能。
目標是:
0)適用於最新的Chrome瀏覽器,Safari瀏覽器,Firefox,Opera和IE瀏覽器,如果有可能在某些平板電腦上使用。
1)白色空格被保留,文本只在換行字符上打包(適用於Chrome,Safari和Firefox,但不適用於Opera和IE 9 *)。
2)textfield是可編輯的(與html中的textareas和contenteditable p元素具有相同的可靠和穩定的方式),並且高度和寬度擴展爲適合文本(適用於Chrome,Safari和Firefox,但不適用於Opera和IE 9 *)。
3)Texfield可以在保持文本可編輯性的情況下進行轉換(旋轉,傾斜,翻譯)(測試旋轉,但不適用於任何瀏覽器*)。
- 編輯:Foreignobject rotation作品在Firefox 15.0.1,但不是在 的Safari 5.1.7(6534.57.2),鉻22.0.1229.79,歌劇12.02,IE 9測試在Mac OS X 10.6.8。
4)文本框可以被裁剪和屏蔽,但不一定保持文本的可編輯性(尚未測試)。
使用上面的代碼
*)這些都可以使用Flash來實現,但是Flash有這麼嚴重的問題,它不適合我的目的(在代碼中的每個細微變化後,都使用被再次編譯Flex很慢,字體大小有限制,跟蹤技術是面向像素的,而不是相對於em大小等),並且跨平臺仍然存在差異。我想嘗試一下SVG!
訪客:
我可以在瀏覽器中使用當前的SVG支持達到我的目標0-4嗎?即將到來的SVG 2.0在這種情況下的一些幫助?
編輯:更改顯示:表顯示:表格單元格(並添加新的jsfiddle),因爲顯示:表使該字段在第一個文本行上按下箭頭時失去焦點。
IE不支持foreignObject。我懷疑這在IE中支持這一點是無法實現的。 –