Saya ingin menampilkan <text>
di SVG apa yang akan otomatis dibungkus ke wadah <rect>
dengan cara yang sama seperti teks HTML mengisi <div>
elemen. Apakah ada cara untuk melakukannya? Saya tidak ingin memposisikan garis secara terpisah dengan menggunakan <tspan>
s.
108
Berikut alternatifnya:
Memperhatikan bahwa meskipun foreignObject mungkin dilaporkan didukung dengan featureestring itu, tidak ada jaminan bahwa HTML dapat ditampilkan karena itu tidak diwajibkan oleh spesifikasi SVG 1.1. Saat ini tidak ada fitur uji fitur untuk html-in-foreignobject support. Namun, fitur ini masih didukung di banyak browser, jadi fitur ini kemungkinan akan dibutuhkan di masa mendatang, mungkin dengan tanda fitur yang sesuai.
Perhatikan bahwa elemen 'textArea' di SVG Tiny 1.2 mendukung semua fitur svg standar, misalnya pengisian lanjutan dll, dan Anda dapat menentukan lebar atau tinggi sebagai otomatis, yang berarti teks dapat mengalir dengan bebas ke arah itu. ForeignObject bertindak sebagai kliping area pandang.
Catatan: meskipun contoh di atas adalah konten SVG 1.1 yang valid, di SVG 2 atribut 'requiredFeatures' telah dihapus, yang berarti elemen 'switch' akan mencoba merender elemen 'g' pertama terlepas dari dukungan untuk SVG 1.2 'textArea 'elemen. Lihat spesifikasi elemen sakelar SVG2 .
sumber
xhtml:div
alih-alihdiv
, tetapi itu bisa jadi karena d3.js. Saya tidak dapat menemukan referensi yang berguna tentang TextFlow, apakah itu (masih) ada atau hanya dalam beberapa draf?TextPath mungkin bagus untuk beberapa kasus.
sumber
Membangun kode @Mike Gledhill, saya telah mengambil langkah lebih jauh dan menambahkan lebih banyak parameter. Jika Anda memiliki SVG RECT dan ingin teks dibungkus di dalamnya, ini mungkin berguna:
sumber
boxwidth = parseInt(boxObject.getAttribute('width'))
hanya akan menerima lebar dalam piksel, sementaraboxwidth = parseInt(boxObject.getBBox().width)
, akan menerima semua jenis satuan ukuranFungsionalitas ini juga dapat ditambahkan menggunakan JavaScript. Carto.net memiliki contoh:
http://old.carto.net/papers/svg/textFlow/
Hal lain yang juga mungkin berguna adalah Anda adalah area teks yang dapat diedit:
http://old.carto.net/papers/svg/gui/textbox/
sumber
Kode berikut berfungsi dengan baik. Jalankan cuplikan kode apa yang dilakukannya.
Mungkin itu bisa dibersihkan atau membuatnya otomatis bekerja dengan semua tag teks di SVG.
sumber
Saya telah memposting panduan berikut untuk menambahkan beberapa pembungkusan kata palsu ke elemen "teks" SVG di sini:
SVG Word Wrap - Tampilkan stopper?
Anda hanya perlu menambahkan fungsi JavaScript sederhana, yang membagi string Anda menjadi elemen "tspan" yang lebih pendek. Berikut adalah contoh tampilannya:
Semoga ini membantu !
sumber