คอมพิวเตอร์ Windows อินเทอร์เน็ต

ตัวแบ่งหน้า html ที่พิมพ์ได้ ตัวแบ่งหน้าสำหรับการพิมพ์โดยใช้ CSS3 เกี่ยวกับการพิมพ์หน้าที่ไม่เหมาะสม

บล็อกหน้าประกอบด้วยพื้นที่หน้าที่มีเนื้อหาและพื้นที่ขอบที่ล้อมรอบพื้นที่หน้า กฎ @page ใช้เพื่อเปลี่ยนคุณสมบัติ css บางอย่างเมื่อพิมพ์เอกสาร คุณสามารถเปลี่ยนได้เฉพาะระยะขอบขององค์ประกอบ และคุณยังสามารถตั้งค่าตัวแบ่งหน้าในตำแหน่งที่ระบุได้

@page (ระยะขอบ: 2in;)

เป็นไปได้ที่จะกำหนดระยะขอบเอกสารแต่ละรายการภายในกฎ @page เช่น ระยะขอบบน ระยะขอบขวา ระยะขอบล่าง ระยะขอบซ้าย:

2. ตัวแบ่งหน้า

คุณสามารถควบคุมตัวแบ่งหน้าโดยใช้คุณสมบัติ page-break-before, page-break-after และ page-break-Inside คุณสมบัติเหล่านี้ใช้กับองค์ประกอบบล็อกซึ่งคุณสมบัติตำแหน่งถูกตั้งค่าเป็นสัมพันธ์หรือคงที่

หน้าแตกก่อน
ค่า:
รถยนต์
เสมอ เพิ่มตัวแบ่งหน้าก่อนองค์ประกอบเสมอ
หลีกเลี่ยง ยกเลิกการจัดวางตัวแบ่งหน้าองค์ประกอบ ถ้าเป็นไปได้
ซ้าย เพิ่มตัวแบ่งหน้าหนึ่งหรือสองหน้าก่อนองค์ประกอบเพื่อให้หน้าถัดไปจัดรูปแบบเป็นหน้าซ้าย องค์ประกอบจะถูกพิมพ์โดยเริ่มจากด้านบนของหน้าด้านซ้ายเช่น บนหน้าที่ด้านซ้ายของกระดูกสันหลัง สำหรับการพิมพ์สองด้าน จะถูกส่งออกที่ด้านหลังของกระดาษหนึ่งแผ่น
ขวา เพิ่มตัวแบ่งหน้าหนึ่งหรือสองหน้าก่อนองค์ประกอบ องค์ประกอบจะถูกพิมพ์โดยเริ่มจากด้านบนสุดของขอบด้านขวา หน้าถัดไปจะถูกจัดรูปแบบเป็นหน้าขวา
สืบทอด

ไวยากรณ์:

@media พิมพ์ (h1 (หน้าแตกก่อน: เสมอ;))

หน้าแตกหลัง
ค่า:
รถยนต์ ค่าเริ่มต้นคือการตั้งค่าตัวแบ่งหน้าอัตโนมัติ
เสมอ เพิ่มตัวแบ่งหน้าหลังองค์ประกอบเสมอ
หลีกเลี่ยง ยกเลิกการเพิ่มตัวแบ่งหลังจากองค์ประกอบ ถ้าเป็นไปได้
ซ้าย เพิ่มตัวแบ่งหน้าหนึ่งหรือสองหน้าหลังจากองค์ประกอบเพื่อให้หน้าถัดไปจัดรูปแบบเป็นหน้าซ้าย องค์ประกอบจะถูกพิมพ์โดยเริ่มจากด้านบนของหน้าด้านซ้ายเช่น บนหน้าที่ด้านซ้ายของกระดูกสันหลัง สำหรับการพิมพ์สองด้าน จะถูกส่งออกที่ด้านหลังของกระดาษหนึ่งแผ่น
ขวา เพิ่มตัวแบ่งหน้าหนึ่งหรือสองหน้าหลังจากองค์ประกอบเพื่อให้หน้าถัดไปมีรูปแบบเป็นหน้าขวา องค์ประกอบจะถูกพิมพ์โดยเริ่มจากด้านบนสุดของขอบด้านขวา
สืบทอด สืบทอดคุณสมบัตินี้จากองค์ประกอบหลัก

ไวยากรณ์:

@media พิมพ์ (ส่วนท้าย (หน้าแบ่งหลัง: เสมอ;))

คุณสมบัติ page-break-inside บอกเบราว์เซอร์ว่าหน้าสามารถแตกภายในองค์ประกอบได้หรือไม่ แต่ถ้าองค์ประกอบยาวกว่าหน้า การแบ่งก็หลีกเลี่ยงไม่ได้



วิธีจัดการกับตัวแบ่งหน้าเมื่อพิมพ์ตาราง HTML ขนาดใหญ่ (8)

ฉันมีโครงการที่ต้องพิมพ์ตาราง HTML ที่มีหลายแถว

ปัญหาของฉันคือการพิมพ์ตารางในหลายหน้า บางครั้งอาจตัดครึ่งบรรทัด ทำให้อ่านไม่ได้เพราะครึ่งหนึ่งอยู่ที่ขอบของหน้า และส่วนที่เหลือจะพิมพ์ที่ด้านบนของหน้าถัดไป

วิธีแก้ปัญหาที่เป็นไปได้เพียงอย่างเดียวที่ฉันคิดได้คือการใช้ DIV ที่ซับซ้อนแทนการใช้ตารางและบังคับให้แบ่งหน้าหากจำเป็น ... แต่ก่อนที่จะทำการเปลี่ยนแปลงทั้งหมด ฉันคิดว่าฉันอาจถามที่นี่ก่อนหน้านี้

ใช้คุณสมบัติ CSS เหล่านี้:

ตัวแบ่งหน้าหลัง ตัวแบ่งหน้าก่อนตัวแบ่งหน้า

ตัวอย่างเช่น:

....

ไม่มีคำตอบใดที่ได้ผลสำหรับฉันใน Chrome AAverin บน GitHub สร้าง Javascript ที่มีประโยชน์สำหรับสิ่งนี้และมันใช้ได้ผลสำหรับฉัน:

เพียงเพิ่ม js ลงในโค้ดของคุณ และเพิ่มคลาส splitForPrint ลงในตาราง และมันจะแบ่งตารางออกเป็นหลาย ๆ หน้าอย่างเรียบร้อยและเพิ่มส่วนหัวของตารางลงในแต่ละหน้า

หมายเหตุ: เมื่อใช้ตัวแบ่งหน้า: เสมอสำหรับแท็ก ตัวแบ่งหน้าจะสร้างตัวแบ่งหน้าหลังจากบิตสุดท้ายของตาราง สร้างหน้าว่างโดยสมบูรณ์ทุกครั้ง! ในการแก้ไขปัญหานี้ ให้เปลี่ยนเป็น page-break-after: auto มันจะแตกอย่างถูกต้องและจะไม่สร้างหน้าว่างพิเศษ

....

คำตอบที่ยอมรับใช้ไม่ได้กับฉันในทุกเบราว์เซอร์ แต่หลังจาก css ใช้งานได้จริงสำหรับฉัน:

Tr (แสดง: table-row-group; page-break-inside: หลีกเลี่ยง; page-break-after: auto;)

โครงสร้าง html คือ:

...

ในกรณีของฉัน มีปัญหาเพิ่มเติมกับ thead tr แต่สิ่งนี้สามารถแก้ปัญหาดั้งเดิมของการถือแถวของตารางได้

เนื่องจากปัญหาในหัวข้อ ฉันจึงลงเอยด้วย:

#theTable td * (ตัวแบ่งหน้า: หลีกเลี่ยง;)

สิ่งนี้ไม่ได้หยุดอันดับจากการพังทลาย เฉพาะเนื้อหาของแต่ละเซลล์

ฉันลงเอยด้วยวิธีการของ @ vicenteherrera ด้วยการปรับแต่งบางอย่าง (ซึ่งอาจจะเป็น bootstrap 3)

โดยทั่วไป; เราไม่สามารถทำลาย tr s หรือ td s ได้เพราะพวกมันไม่ใช่องค์ประกอบระดับบล็อก ดังนั้นเราจึงใส่ div ลงในแต่ละรายการและใช้กฎตัวแบ่งหน้า * กับ div อย่างที่สอง เราเพิ่ม padding ที่ด้านบนของแต่ละ div เหล่านี้เพื่อชดเชยส่วนต่างๆ ของการจัดสไตล์

จำเป็นต้องมีการปรับแต่งและการปรับช่องว่างภายในเพื่อชดเชยความกระวนกระวายใจบางอย่างที่ได้รับการแนะนำ (จาก bootstrap ฉันเดา) ฉันไม่แน่ใจว่าฉันกำลังนำเสนอโซลูชันใหม่จากคำตอบอื่นสำหรับคำถามนี้หรือไม่ แต่อาจช่วยใครบางคนได้

ฉันเพิ่งแก้ไขปัญหานี้ด้วยวิธีแก้ปัญหาที่ดี

LeaveBreak (เส้นขอบ: 2px ทึบ; ตัวแบ่งหน้าภายใน: หลีกเลี่ยง;)

พิมพ์ฟังก์ชัน () ($ (". TableToPrint td, .tableToPrint th") แต่ละฟังก์ชัน () (ฟังก์ชัน () ($ (นี้) .css ("ความกว้าง" $ (นี่) .width () + "px")) ; $ (". tableToPrint tr") ห่อ ("

"); window.print ();)

ทำงานเหมือนมีเสน่ห์!

ฉันได้ทดสอบวิธีแก้ปัญหามากมายและไม่มีใครทำงานได้ดี

ดังนั้นฉันจึงลองใช้เคล็ดลับเล็กน้อยและได้ผล:

tfoot กับสไตล์: ตำแหน่ง: คงที่; ด้านล่าง: 0px; ตำแหน่ง: คงที่; ด้านล่าง: 0px; พอดีกับด้านล่างสุดของหน้าสุดท้าย แต่ถ้าส่วนท้ายสูงเกินไป มันจะทับซ้อนกับเนื้อหาของตาราง

tfoot เท่านั้นด้วย: display: table-footer-group; ไม่ทับซ้อนกันแต่ไม่อยู่ท้ายหน้าสุดท้าย ...

มาใส่สอง tfoots:

TFOOT.placer (แสดง: table-footer-group; ความสูง: 130px;) TFOOT.contenter (แสดง: table-footer-group; ตำแหน่ง: คงที่; ด้านล่าง: 0px; ความสูง: 130px;) ข้อความยาวหรือรูปภาพสูงของคุณที่นี่

หนึ่งสงวนพื้นที่บนเพจที่ไม่ใช่ด้านหลัง อีกส่วนหนึ่งอยู่ในส่วนท้ายส่วนตัวของคุณ

ทดสอบ

หัวเรื่อง
บันทึกย่อ
NS
NS
NS

แม้ว่าเราจะอยู่ในยุคดิจิทัลที่ทุกอย่างสามารถเข้าถึงได้ง่าย แต่ก็ยังมีคนอีกจำนวนมากที่ชอบอ่านข้อความยาวๆ จากกระดาษ มีโอกาสที่ผู้ใช้บางคนจะพิมพ์ข้อความจากไซต์ของคุณเพื่อให้พวกเขาสามารถอ่านนอกคอมพิวเตอร์ได้

ความสามารถในการแสดงเนื้อหาที่เหมาะสมสำหรับการพิมพ์นั้นมีมาช้านานแล้ว เราสามารถทำได้โดยใช้กฎ @media ในสไตล์ชีตดังนี้:

@สื่อพิมพ์ ( / * กฎของสไตล์ * / }

มีคุณสมบัติหลายอย่างที่ช่วยให้คุณจัดรูปแบบเนื้อหาของหน้าเว็บเพื่อให้พิมพ์ได้ และเราจะกล่าวถึงหนึ่ง: ตัวแบ่งหน้า

มันทำอะไร?

หากคุณเคยทำงานกับโปรแกรมแก้ไขข้อความ เช่น Microsoft Word และ Pages คุณควรคุ้นเคยกับเมนูตัวแบ่งหน้าที่ช่วยให้คุณตัดข้อความในหน้าถัดไปได้

โมดูลนี้ทำเช่นเดียวกัน ช่วยให้คุณสามารถควบคุมวิธีการห่อเนื้อหาของหน้าเว็บได้ทีละหน้า

การใช้ตัวแบ่งหน้า

ตัวอย่างเช่น เราได้สร้างหน้าสาธิตที่เราจะพิมพ์ เราพบว่ามีการโอนที่ไม่ถูกต้องดังที่คุณเห็นด้านล่าง

มันจะดูดีขึ้นถ้าหัวเรื่องและบรรทัดที่ไม่มีคนเริ่มในหน้าถัดไป

ในการทำเช่นนี้ เราใช้คุณสมบัติตัวแบ่งหน้าและตั้งค่าให้เป็นบังคับให้องค์ประกอบถัดไปไปที่หน้าถัดไปเสมอ

ตัวแบ่งหน้า (ตัวแบ่งหน้า: เสมอ;)

จากนั้นคุณสามารถสร้างองค์ประกอบใหม่ที่มีคลาสระหว่างองค์ประกอบหรือกำหนดคลาสให้กับองค์ประกอบก่อนหน้าด้วยวิธีนี้

กับ ยางลบ คุณลักษณะ คุณสามารถถ่ายภาพคอมโพสิต จากนั้นรวมทั้งหมดเข้าด้วยกัน เพื่อให้ได้พื้นหลังโดยไม่มีส่วนเสริมที่คุณทำไม่ได้

โทรศัพท์ที่จะเดินทางไปกับ

S นักแปล จะเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการเดินทางของคุณเป็น ...

ตอนนี้หัวเรื่องและปากด้านล่างจะเริ่มในหน้าถัดไป

เส้นห้อยบนและล่าง

วิธีการข้างต้นอาจเป็นเรื่องที่น่าเบื่อถ้าคุณมีข้อความจำนวนมาก ดังนั้น แทนที่จะบังคับให้เนื้อหาไปที่หน้าถัดไป การกำหนดเกณฑ์ขั้นต่ำสำหรับเด็กกำพร้าบนและล่างจะดีกว่า

ในทางปฏิบัติเกี่ยวกับการพิมพ์ เครื่องประดับด้านบนและด้านล่างหมายถึงคำที่เหลือและบรรทัดสั้นๆ ที่ขาดหายไปจากส่วนที่เหลือของย่อหน้าในหน้าอื่น

การใช้คุณสมบัติ เด็กกำพร้า (เด็กกำพร้าล่าง) และหญิงม่าย (เด็กกำพร้าบน) เราสามารถกำหนดเกณฑ์ขั้นต่ำได้ ในตัวอย่างด้านล่าง เรากำลังระบุว่าอย่างน้อยสามบรรทัดยังคงอยู่ที่ด้านล่างหรือที่จุดเริ่มต้นของย่อหน้าที่เกิดตัวแบ่งหน้า

P (เด็กกำพร้า: 3; ม่าย: 3;)

แหล่งข้อมูลเพิ่มเติม

เราได้ครอบคลุมพื้นฐานของการใช้ตัวแบ่งหน้าที่พิมพ์ได้สำหรับข้อความบนไซต์ของคุณ และเราหวังว่าจะเป็นแรงบันดาลใจให้คุณคิดเกี่ยวกับสไตล์สำหรับไซต์ของคุณเพื่อพิมพ์ เพื่อให้เนื้อหาของคุณดูดีทั้งบนหน้าจอและบนกระดาษ

การแปล - หน้าที่

ตัวแบ่งหน้า

ส่วนต่อไปนี้อธิบายรูปแบบการจัดรูปแบบหน้าที่ใช้ใน CSS2 ห้าคุณสมบัติที่แตกต่างกันใช้เพื่อบอกตัวแทนผู้ใช้ว่าสามารถหรือควรแบ่งหน้าและหน้า (ซ้ายหรือขวา) ที่ใดควรแสดงเนื้อหาต่อไป ตัวแบ่งหน้าแต่ละหน้าจะขัดขวางการแสดงเนื้อหาในกล่องหน้าปัจจุบัน และทำให้ส่วนที่เหลือของโครงสร้างเอกสารแสดงในกล่องหน้าใหม่

แบ่งองค์ประกอบก่อนและหลัง: "page-break-before", "page-break-after", "page-break-inside"
"หน้าแตกก่อน"


ค่าเริ่มต้น: auto
มรดก: ไม่
เปอร์เซ็นต์การมอบหมาย: N / A

"หน้าแตกหลัง"

ค่า: auto | เสมอ | หลีกเลี่ยง | ซ้าย | ขวา | ได้รับการถ่ายทอด
ค่าเริ่มต้น: auto
ขอบเขต: องค์ประกอบระดับโครงสร้าง
มรดก: ไม่
เปอร์เซ็นต์การมอบหมาย: N / A
อุปกรณ์: การจัดรูปแบบภาพ, แบ่งหน้า

"หน้าแตกข้างใน"

ความคุ้มค่า: หลีกเลี่ยง | รถยนต์ | ได้รับการถ่ายทอด
ค่าเริ่มต้น: auto
ขอบเขต: องค์ประกอบระดับโครงสร้าง
มรดก: ใช่
เปอร์เซ็นต์การมอบหมาย: N / A
อุปกรณ์: การจัดรูปแบบภาพ, แบ่งหน้า

ค่าของคุณสมบัติเหล่านี้มีความหมายดังต่อไปนี้:

รถยนต์

ไม่เริ่มต้นหรือไม่อนุญาตให้มีการแบ่งหน้าก่อน (หลังหรือภายใน) บล็อกที่สร้างขึ้น

เสมอ

เริ่มต้นการแบ่งหน้าก่อน (หลัง) บล็อกที่สร้างขึ้นเสมอ

หลีกเลี่ยง

ยกเลิกการแบ่งหน้าก่อน (หลังหรือภายใน) บล็อกที่สร้างขึ้น

ซ้าย

เริ่มการแบ่งหน้าหนึ่งหรือสองหน้าก่อน (หลัง) บล็อกที่สร้างขึ้นเพื่อให้หน้าถัดไปจัดรูปแบบเป็นหน้าซ้าย

ขวา

เริ่มการแบ่งหน้าหนึ่งหรือสองหน้าก่อน (หลัง) บล็อกที่สร้างขึ้นเพื่อให้หน้าถัดไปจัดรูปแบบเป็นหน้าขวา

ตำแหน่งที่เป็นไปได้ของการแบ่งหน้าจะถูกกำหนดโดยคุณสมบัติ "page-break-inside" ขององค์ประกอบหลัก คุณสมบัติ "page-break-after" ขององค์ประกอบก่อนหน้า และคุณสมบัติ "page-break-before" ของ องค์ประกอบที่ตามมา หากค่าของคุณสมบัติเหล่านี้ไม่ใช่ "อัตโนมัติ" ค่า "เสมอ", "ซ้าย" และ "ขวา" จะมีความสำคัญเหนือค่าของ "หลีกเลี่ยง" ส่วนเกี่ยวกับตัวแบ่งหน้าที่ยอมรับได้ให้กฎที่ชัดเจนสำหรับการเริ่มต้นหรือไม่อนุญาตตัวแบ่งหน้าโดยใช้คุณสมบัติเหล่านี้

การใช้เพจที่มีชื่อ: "page"
"หน้าหนังสือ"

ความหมาย:<идентификатор>| รถยนต์
ค่าเริ่มต้น: auto
ขอบเขต: องค์ประกอบระดับโครงสร้าง
มรดก: ใช่
เปอร์เซ็นต์การมอบหมาย: N / A
อุปกรณ์: การจัดรูปแบบภาพ, แบ่งหน้า

คุณสมบัติ "หน้า" สามารถใช้เพื่อกำหนดประเภทของหน้าเฉพาะที่องค์ประกอบจะแสดง

ในตัวอย่างนี้ ตารางทั้งหมดจะถูกวางไว้ที่ด้านขวาของหน้า (เรียกว่า "หมุน") ซึ่งอยู่ในแนวนอน:


ตาราง (หน้า: หมุน; ตัวแบ่งหน้าก่อน: ขวา)

การกระทำของคุณสมบัติ "หน้า" มีดังนี้: หากค่าของคุณสมบัติ "หน้า" ของบล็อกหน้าซึ่งมีเนื้อหาอยู่ในระดับอินไลน์ แตกต่างจากค่าของคุณสมบัติที่คล้ายกันของบล็อกหน้าก่อนหน้า เนื้อหาที่อยู่ในระดับอินไลน์ด้วย จากนั้นตัวแบ่งหน้าหนึ่งหรือสองหน้าจะถูกแทรกระหว่างกัน หลังจากนั้นเอาต์พุตจะถูกสร้างขึ้นในบล็อกหน้าที่มีชื่อ ดูส่วนด้านล่างเกี่ยวกับการบังคับตัวแบ่งหน้า

ในตัวอย่างต่อไปนี้ ตารางสองตารางจะแสดงบนหน้าแนวนอน (โดยธรรมชาติจะอยู่ที่หน้าเดียวกันหากทั้งสองพอดีกับหน้า) หน้าประเภท "แคบ" จะไม่ถูกใช้เลย แม้ว่าจะตั้งค่าไว้สำหรับองค์ประกอบ DIV ก็ตาม

@เพจแคบ (ขนาด: 9ซม. 18ซม.)
@page หมุนแล้ว (ขนาด: แนวนอน)
DIV (หน้า: แคบ)
ตาราง (หน้า: หมุน)

ใช้ในเอกสาร


...

...

หน้าแบ่งภายในองค์ประกอบ: "เด็กกำพร้า", "แม่ม่าย"
"เด็กกำพร้า"

ความหมาย:<целое>| ได้รับการถ่ายทอด
ค่าเริ่มต้น: 2
ขอบเขต: องค์ประกอบระดับโครงสร้าง
มรดก: ใช่
เปอร์เซ็นต์การมอบหมาย: N / A
อุปกรณ์: การจัดรูปแบบภาพ, แบ่งหน้า

"หญิงม่าย"

ความหมาย:<целое>| ได้รับการถ่ายทอด
ค่าเริ่มต้น: 2
ขอบเขต: องค์ประกอบระดับโครงสร้าง
มรดก: ใช่
เปอร์เซ็นต์การมอบหมาย: N / A
อุปกรณ์: การจัดรูปแบบภาพ, แบ่งหน้า

คุณสมบัติ เด็กกำพร้า กำหนดจำนวนบรรทัดย่อหน้าขั้นต่ำที่ควรทิ้งไว้ที่ด้านล่างของหน้า คุณสมบัติ "แม่ม่าย" กำหนดจำนวนบรรทัดย่อหน้าขั้นต่ำที่ควรทิ้งไว้ที่ด้านบนสุดของหน้า ตัวอย่างของการใช้คุณสมบัติเหล่านี้เพื่อควบคุมตัวแบ่งหน้าแสดงไว้ด้านล่าง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจัดรูปแบบย่อหน้า ให้ดูส่วนในกล่องบรรทัด

ตัวแบ่งหน้าที่ยอมรับได้

ในโฟลว์ปกติ ตัวแบ่งหน้าสามารถอยู่ในตำแหน่งต่อไปนี้:

  1. ในพื้นที่สงวนไว้สำหรับระยะขอบแนวตั้งระหว่างบล็อคส่วนประกอบ หากตัวแบ่งหน้าเกิดขึ้น ณ จุดนี้ ค่าที่คำนวณของคุณสมบัติ "margin-top" และ "margin-bottom" ที่เกี่ยวข้องจะถูกตั้งค่าเป็น "0"
  2. ระหว่างบล็อกบรรทัดภายในบล็อกระดับโครงสร้าง

ความไม่ต่อเนื่องของประเภทที่พิจารณาเป็นไปตามกฎต่อไปนี้:

  • กฎ A: ตัวแบ่ง (1) ได้รับอนุญาตก็ต่อเมื่อค่าของคุณสมบัติ "หน้าแตกหลัง" และ "หน้าแตกก่อน" ขององค์ประกอบทั้งหมดที่วางไข่บล็อกที่เกิดขึ้นในช่วงพักได้รับอนุญาตให้เกิดขึ้น ซึ่งเกิดขึ้นเมื่ออย่างน้อยหนึ่งรายการเป็น "เสมอ" "ซ้าย" หรือ "ขวา" หรือทั้งหมดเป็น "อัตโนมัติ" ในเวลาเดียวกัน
  • กฎ B: อย่างไรก็ตาม หากคุณสมบัติทั้งหมดเหล่านี้ถูกตั้งค่าเป็น "อัตโนมัติ" และคุณสมบัติ "ตัวแบ่งหน้าภายใน" ของบรรพบุรุษร่วมที่ใกล้เคียงที่สุดขององค์ประกอบที่มีชื่อทั้งหมดถูกตั้งค่าเป็น "หลีกเลี่ยง" ตัวแบ่งหน้า ณ จุดนั้นคือ ห้าม
  • กฎ B: ตัวแบ่งหน้า (2) จะได้รับอนุญาตก็ต่อเมื่อจำนวนกล่องบรรทัดระหว่างตัวแบ่งและจุดเริ่มต้นของบล็อกการปิดเท่ากับหรือมากกว่าคุณสมบัติ "orphans" และจำนวนกล่องแบบอินไลน์ระหว่างตัวแบ่งและ จุดสิ้นสุดของบล็อกเท่ากับหรือมากกว่ามูลค่าของคุณสมบัติ "แม่ม่าย" ...
  • กฎ D: ยิ่งไปกว่านั้น ตัวแบ่งหน้า (2) จะได้รับอนุญาตก็ต่อเมื่อคุณสมบัติ "ตัวแบ่งหน้า" ถูกตั้งค่าเป็น "อัตโนมัติ"

หากกฎข้างต้นไม่อนุญาตให้คุณแทรกตัวแบ่งที่เพียงพอ กฎ B และ D จะถูกละเว้นเพื่อป้องกันไม่ให้เนื้อหาไหลออกจากบล็อกหน้า ซึ่งช่วยให้คุณสร้างตัวแบ่งเพิ่มเติมได้

หากหลังจากนี้ไม่สามารถบรรลุจำนวนเบรกที่เพียงพอ กฎ A และ B จะไม่นำมาพิจารณาเพื่อค้นหาจุดพักเพิ่มเติม

ตัวแบ่งหน้าไม่สามารถทำได้ในบล็อกที่มีตำแหน่งที่แน่นอน

บังคับตัวแบ่งหน้า

ตัวแบ่งหน้าจะต้องเกิดขึ้น (1) หากคุณสมบัติ "หน้าแตกหลัง" และ "ตัวแบ่งหน้าก่อน" อย่างน้อยหนึ่งคุณสมบัติขององค์ประกอบที่สร้างบล็อกที่เกิดขึ้นที่จุดพักคือ "เสมอ", "ซ้าย " หรือ "ใช่"

ตัวแบ่งหน้าจะต้องเกิดขึ้นด้วย (1) หากค่าของคุณสมบัติ "หน้า" ของกล่องบรรทัดก่อนและหลังตัวแบ่งนั้นแตกต่างกัน

ตัวแบ่งหน้า "ดีที่สุด"

CSS2 ไม่ได้ระบุว่าควรใช้ตัวแบ่งหน้าใดจากชุดของตัวแบ่งที่อนุญาต CSS2 ไม่ได้ป้องกันตัวแทนผู้ใช้จากการแทรกตัวแบ่งหน้าทุกที่หรือไม่ได้ใช้เลย แต่ข้อมูลจำเพาะ CSS2 ขอแนะนำอย่างยิ่งให้ตัวแทนผู้ใช้ปฏิบัติตามฮิวริสติกต่อไปนี้ (จนกระทั่งดูเหมือนว่าบางครั้งขัดแย้งกันเอง):

  • การแบ่งหน้าควรทำไม่บ่อยเท่าที่เป็นไปได้
  • หน้าทั้งหมดที่ไม่ลงท้ายด้วยตัวแบ่งแบบบังคับควรมีความสูงเท่ากัน
  • ไม่ควรมีช่องว่างภายในบล็อกที่มีเส้นขอบ
  • ไม่ควรมีตัวแบ่งภายในโต๊ะ
  • ไม่ควรมีช่องว่างภายในวัตถุที่ย้าย

สมมติว่าสไตล์ชีตของคุณมีคุณสมบัติ "orphans: 4" และ "widows: 2" และมี 20 แถว (กล่องบรรทัด) ที่ด้านล่างของหน้าปัจจุบัน:

  • หากย่อหน้าสุดท้ายของหน้าปัจจุบันมีไม่เกิน 20 บรรทัด จะต้องอยู่ในหน้าปัจจุบัน
  • หากย่อหน้ามี 21 หรือ 22 บรรทัด และส่วนที่สองของย่อหน้าไม่ควรละเมิดข้อ จำกัด ที่กำหนดโดยคุณสมบัติ "แม่ม่าย" ดังนั้นโดยอาศัยสิ่งนี้ส่วนที่สองควรประกอบด้วยสองบรรทัด
  • หากย่อหน้ามีมากกว่า 23 บรรทัด ส่วนแรกควรยาว 20 บรรทัด และส่วนที่สองควรรวมบรรทัดอื่นๆ ทั้งหมด

ตอนนี้ สมมติว่าค่าของคุณสมบัติ "เด็กกำพร้า" คือ "10" ค่าของคุณสมบัติ "หม้าย" คือ "20" และมี 8 แถวที่สามารถใช้ได้ที่ด้านล่างของหน้าปัจจุบัน:

  • หากย่อหน้าที่ท้ายหน้าปัจจุบันมีไม่เกิน 8 บรรทัด จะต้องอยู่ในหน้าปัจจุบัน
  • หากย่อหน้ามีมากกว่า 9 บรรทัด จะแบ่งไม่ได้ (เนื่องจากจะเป็นการละเมิดข้อจำกัดที่กำหนดโดยคุณสมบัติ "เด็กกำพร้า") ดังนั้นจึงควรย้ายไปยังหน้าถัดไปเป็นบล็อก