Mesin Tata Letak

Mesin Tata Letak

Lapisan tata letak mengubah DOM yang sudah di-styling menjadi geometri: sebuah pohon kotak, lalu fragmen dengan ukuran dan posisi. Ini adalah tahap setelah gaya yang dihitung, dan output-nya adalah objek Python biasa yang dapat Anda inspeksi.


Dari DOM ke Pohon Kotak

build_box_tree() menghasilkan BoxRoot berisi BoxNode entri dari dokumen yang telah di-styling, mengklasifikasikan model tampilan setiap elemen melalui classify_display() terhadap enumerasi Display. ComputedStyle dan EdgeSizes membawa gaya per-kotak serta pengukuran model kotak.

Tata Letak Blok

layout_block_tree() melakukan tata letak tingkat blok pada pohon kotak, menghasilkan FragmentRoot yang berisi BlockFragment entri dengan geometri yang telah diselesaikan.

Tata Letak Inline

Konten inline dibentuk menjadi ShapedRun dan InlineTextFragment, disusun menjadi baris LineFragment melalui layout_inline_fragments() dan flush_inline_run().

Pagination

paginate_fragments() membagi output fragmen menjadi PageFragment halaman, menghormati BreakHints, dengan PageMarginBoxes memodelkan area margin halaman dan flush_page() menyelesaikan setiap halaman.


Tips dan Praktik Terbaik

  • Selesaikan gaya terhitung sebelum tata letak — pohon kotak berasal dari elemen yang bergaya
  • Periksa EdgeSizes ketika dimensi kotak terlihat salah; margin dan padding diselesaikan di sana
  • Jaga agar pohon kotak dan pohon fragmen tetap terpisah dalam model mental Anda: kotak menggambarkan struktur, fragmen menggambarkan geometri yang ditempatkan

Masalah Umum

MasalahPenyebabPerbaikan
Output fragmen kosongPenataan dijalankan pada pohon yang tidak bergaya atau kosongLampirkan stylesheet dan konten terlebih dahulu
Klasifikasi tampilan tidak terdugaNilai terhitung display elemen berbeda dari asumsiPeriksa hasil classify_display() untuk kotak
Pemecahan halaman di tempat yang tidak tepatBreak hints tidak disetelBerikan BreakHints kepada paginate_fragments()

FAQ

Apa perbedaan antara kotak dan fragmen?

Kotak (BoxNode) menggambarkan struktur tata letak yang berasal dari gaya; fragmen (BlockFragment, LineFragment) adalah hasil penempatan dengan geometri.

Apakah mesin menangani paginasi?

Ya — paginate_fragments() menghasilkan PageFragment halaman dengan kotak margin.

Dari mana rangkaian teks berasal?

Konten sebaris dibentuk menjadi objek ShapedRun dan dirakit menjadi baris LineFragment.


API Reference Ringkasan

Kelas/MetodeDeskripsi
build_box_treeTurunkan pohon kotak dari DOM yang bergaya
layout_block_treeJalankan tata letak blok pada pohon kotak
layout_inline_fragmentsSusun konten inline menjadi baris
paginate_fragmentsPisahkan fragmen menjadi halaman
BoxNodeSatu kotak dalam struktur tata letak
PageFragmentSatu halaman yang telah ditata

Lihat Juga

 Bahasa Indonesia