


Bagaimana untuk menarik rajah tulang ikan yang kompleks dan disesuaikan menggunakan JavaScript asli?
Apr 05, 2025 pm 05:42 PMPenjelasan terperinci mengenai lukisan tulang ikan kompleks di JavaScript asli
Artikel ini menerangkan cara menggunakan kod JavaScript tulen untuk menarik rajah tulang ikan yang kompleks dan disesuaikan tanpa perlu menggunakan perpustakaan pihak ketiga seperti G6. Kami akan menyelam ke dalam pelaksanaan kod secara mendalam dan menunjukkan bahagian -bahagian kod yang perlu diperbaiki.
Artikel ini didasarkan pada contoh yang disediakan pengguna gambarajah tulang ikan yang kompleks (lihat angka di atas). Rajah ini mengandungi nod kanak-kanak pelbagai peringkat dan maklumat teks nod. Oleh itu, kaedah lukisan SVG asli dipilih untuk membuat elemen SVG secara langsung dalam HTML untuk membina gambarajah tulang ikan untuk fleksibiliti yang lebih tinggi.
Kod ini mula -mula mentakrifkan struktur data JSON arr
menyimpan nod dan hubungan hubungan graf tulang ikan. Setiap nod mengandungi sifat seperti label
(label), value
(nilai), type
, time
(masa), dan child
(nod kanak -kanak). Bahagian teras adalah kelas FishBone
, yang bertanggungjawab untuk menguraikan data dan melukis menggunakan elemen SVG.
Kelas FishBone
mengandungi kaedah utama berikut:
-
initKvArray()
: Melalui data, mengira lebar nod untuk setiap bulan, dan menyimpannya dikvArray
. Lebar diselaraskan secara adaptif mengikut panjang teks terpanjang dalam nod kanak -kanak. -
getMaxWidth()
: Recursif mengira lebar teks terpanjang dalam setiap nod dan nod anaknya, dan menentukan lebar nod. -
randerMonthBox()
: menarik nod bulan (parallelogram) dan teksnya. Koordinat X nod bulan dikira berdasarkan lebar nod sebelumnya. -
creatBigCircle()
: Lukis nod utama (bulatan) dan garis penyambung, danrenderParent()
untuk menarik nod kanak -kanak. -
renderParent()
: Rekursif menarik nod kanak -kanak dan mengira ketinggian nod kanak -kanak. -
randerLeaf()
: Lukis nod daun terendah. -
getMaxChildHeight()
: Recursif mengira bilangan maksimum nod kanak -kanak setiap nod dan menentukan susunan nod kanak -kanak. -
getLineWidth()
: Kirakan lebar teks, tetapkan lebar minimum, dan pastikan garis cukup lama untuk menampung teks. -
createTag()
: fungsi penolong, buat elemen SVG. -
createMonth()
: Fungsi penolong, buat nod bulan.
Kod ini telah melaksanakan sebahagian besar fungsi, termasuk penyesuaian lebar nod bulan, penyesuaian panjang teks, dan lukisan graf asas. Tetapi masih ada bahagian berikut yang akan diperbaiki:
- Subset Expansion/Shrink Fungsi: Membolehkan pengguna mengembangkan atau mengecilkan nod kanak -kanak untuk meningkatkan interaktiviti.
- Konfigurasi Warna Line: Membolehkan pengguna menyesuaikan warna garis untuk meningkatkan kesan visual.
- Keseluruhan Penguncupan/Expand Function: Membolehkan pengguna mengembangkan atau mengecilkan keseluruhan gambarajah tulang ikan pada satu masa.
- Fungsi saiz penyesuaian gambar: Secara automatik menyesuaikan saiz gambarajah tulang ikan mengikut kandungan untuk menyesuaikan diri dengan saiz skrin yang berbeza.
- Node Event Binding: Membolehkan pengguna berinteraksi dengan nod, seperti mengklik pada nod untuk memaparkan lebih banyak maklumat.
Fungsi -fungsi ini perlu ditambah dan diperbaiki mengikut keperluan sebenar. Kod ini telah menyimpan antara muka dan pembolehubah yang relevan untuk pengembangan mudah. Sebagai contoh, anda boleh menambah atribut acara dalam data arr
dan mengikat pendengar acara untuk melaksanakan peristiwa nod semasa membuat elemen.
Kod ini menyediakan asas Diagram Fishbone Lengkap, yang pengguna boleh menyesuaikan dan mengembangkan mengikut keperluan mereka sendiri. Ciri -ciri SVG asli memastikan fleksibiliti dan kawalan.
Atas ialah kandungan terperinci Bagaimana untuk menarik rajah tulang ikan yang kompleks dan disesuaikan menggunakan JavaScript asli?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Terdapat banyak cara untuk memusatkan gambar bootstrap, dan anda tidak perlu menggunakan Flexbox. Jika anda hanya perlu berpusat secara mendatar, kelas pusat teks sudah cukup; Jika anda perlu memusatkan elemen secara menegak atau berganda, Flexbox atau Grid lebih sesuai. Flexbox kurang serasi dan boleh meningkatkan kerumitan, manakala grid lebih berkuasa dan mempunyai kos pengajian yang lebih tinggi. Apabila memilih kaedah, anda harus menimbang kebaikan dan keburukan dan memilih kaedah yang paling sesuai mengikut keperluan dan keutamaan anda.

Terdapat empat cara untuk menyesuaikan senarai artikel WordPress: Gunakan pilihan tema, gunakan plugin (seperti pesanan jenis pos, senarai pos WP, barangan boxy), gunakan kod (tambah tetapan dalam fail fungsi.php), atau ubah suai pangkalan data WordPress secara langsung.

Pengiraan C35 pada dasarnya adalah matematik gabungan, yang mewakili bilangan kombinasi yang dipilih dari 3 dari 5 elemen. Formula pengiraan ialah C53 = 5! / (3! * 2!), Yang boleh dikira secara langsung oleh gelung untuk meningkatkan kecekapan dan mengelakkan limpahan. Di samping itu, memahami sifat kombinasi dan menguasai kaedah pengiraan yang cekap adalah penting untuk menyelesaikan banyak masalah dalam bidang statistik kebarangkalian, kriptografi, reka bentuk algoritma, dll.

Keserasian ABI dalam C merujuk kepada sama ada kod binari yang dihasilkan oleh penyusun atau versi yang berbeza boleh serasi tanpa rekompilasi. 1. Konvensyen Calling Function, 2. Pengubahsuaian Nama, 3. Susun atur Jadual Fungsi Maya, 4. Struktur dan susun atur kelas adalah aspek utama yang terlibat.

Cara dengan elegan mengendalikan jarak tag span selepas garis baru dalam susun atur laman web, anda sering memenuhi keperluan untuk mengatur pelbagai rentang secara mendatar ...

Gambaran Keseluruhan: Terdapat banyak cara untuk memusatkan imej menggunakan Bootstrap. Kaedah Asas: Gunakan kelas MX-AUTO ke pusat secara mendatar. Gunakan kelas IMG-cecair untuk menyesuaikan diri dengan bekas induk. Gunakan kelas D-block untuk menetapkan imej ke elemen peringkat blok (pusat menegak). Kaedah Lanjutan: Susun atur Flexbox: Gunakan sifat-Center-Center-Center dan Align-Items-Center. Susun atur Grid: Gunakan Tempat-Item: Properti Pusat. Amalan terbaik: Elakkan bersarang dan gaya yang tidak perlu. Pilih kaedah terbaik untuk projek ini. Perhatikan pemeliharaan kod dan elakkan mengorbankan kualiti kod untuk meneruskan kegembiraan

Algoritma Adaptif Kedudukan Y-Axis untuk Fungsi Anotasi Web Artikel ini akan meneroka cara melaksanakan fungsi anotasi yang serupa dengan dokumen perkataan, terutama bagaimana menangani selang antara anotasi ...

STD :: Unik menghilangkan elemen pendua bersebelahan di dalam bekas dan menggerakkannya ke akhir, mengembalikan iterator yang menunjuk ke elemen pendua pertama. STD :: Jarak mengira jarak antara dua iterators, iaitu bilangan elemen yang mereka maksudkan. Kedua -dua fungsi ini berguna untuk mengoptimumkan kod dan meningkatkan kecekapan, tetapi terdapat juga beberapa perangkap yang perlu diberi perhatian, seperti: STD :: Unik hanya berkaitan dengan unsur -unsur pendua yang bersebelahan. STD :: Jarak kurang cekap apabila berurusan dengan Iterator Akses Bukan Rawak. Dengan menguasai ciri -ciri dan amalan terbaik ini, anda boleh menggunakan sepenuhnya kuasa kedua -dua fungsi ini.
