Elrendezőmotor

Elrendezésmotor

Az elrendezés réteg a stílusos DOM-ot geometriává alakítja: egy dobozfát, majd méretekkel és pozíciókkal rendelkező töredékeket. Ez a szakasz a számított stílusok után következik, és kimenetei egyszerű Python objektumok, amelyeket megtekinthet.


A DOM-tól a dobozfáig

build_box_tree() egy BoxRoot-t BoxNode bejegyzésből hoz létre egy stílusos dokumentumból, minden elem megjelenítési modelljét a classify_display() segítségével a Display felsorolás ellenőrzésével osztályozva. ComputedStyle és EdgeSizes tartalmazzák az egyes dobozok stílusát és a dobozmodell méréseit.

Blokk elrendezés

layout_block_tree() blokk-szintű elrendezést hajt végre a dobozfa felett, egy FragmentRoot-t hoz létre, amely BlockFragment bejegyzést tartalmaz feloldott geometriával.

Beágyazott elrendezés

A beágyazott tartalom ShapedRun és InlineTextFragment darabokra alakul, amelyeket LineFragment sorokba szerelnek össze a layout_inline_fragments() és flush_inline_run() segítségével.

Pagination

paginate_fragments() a fragmentkimenetet PageFragment oldalra osztja, tiszteletben tartva a BreakHints-t, a PageMarginBoxes modellezi az oldalmargó területeket, a flush_page() pedig minden oldalt befejez.


Tippek és bevált gyakorlatok

  • A számított stílusokat a elrendezés előtt kell feloldani — a dobozfa a stilizált elemekből származik.
  • Ellenőrizze a EdgeSizes-t, ha a dobozméretek hibásnak tűnnek; a margók és a kitöltés ott kerülnek feloldásra.
  • Tartsa külön a dobozfát és a fragmentfát a mentális modelljében: a dobozok a szerkezetet írják le, a fragmentek a elhelyezett geometriát.

Gyakori problémák

ProblémaOkJavítás
Üres töredék kimenetElrendezés futtatása egy stílus nélküli vagy üres fánElőször csatold a stíluslapokat és a tartalmat
Váratlan megjelenítési osztályozásAz elem számított display eltér a feltételezéstőlEllenőrizze a classify_display() eredményt a dobozhoz
Oldaltörések furcsa helyekenA törési tippek nincsenek beállítvaSzolgáltassa a BreakHints a paginate_fragments() számára

FAQ

Mi a különbség egy doboz és egy töredék között?

A dobozok (BoxNode) leírják a stílusokból származó elrendezésstruktúrát; a töredékek (BlockFragment, LineFragment) a geometriával rendelkező elhelyezett eredmények.

A motor kezeli a lapozást?

Igen — paginate_fragments() PageFragment oldalt hoz létre margódobozokkal.

Honnan származnak a szövegfolyamok?

A beágyazott tartalom ShapedRun objektumokká alakul, és LineFragment sorokká áll össze.


API Reference Összefoglaló

Osztály/MódszerLeírás
build_box_treeSzármaztassa a dobozfa struktúrát egy stílusos DOM-ból
layout_block_treeFuttassa a blokk elrendezést a dobozfa felett
layout_inline_fragmentsÁllítsa össze az inline tartalmat sorokba
paginate_fragmentsBontsa szét a töredékeket oldalakra
BoxNodeEgy doboz az elrendezési struktúrában
PageFragmentEgy elrendezett oldal

Lásd még:

 Magyar