2016-01-15 4 views
8

मेरे पास हेडर (एच 1, एच 2, एच 3 ...) और पैराग्राफ के साथ एक बड़ा HTML दस्तावेज़ है। जब मैं दस्तावेज़ प्रिंट, मुझे लगता है कि, स्वचालित रूप से, दस्तावेज़ के नीचे हेडर अगले पृष्ठ पर जाने हैं:अनाथ सीएसएस: नीचे पृष्ठ पर हेडर (एच 1, एच 2 ...) से कैसे बचें?

enter image description here

मैं कैसे कर सकता है? मैं पैराग्राफ के साथ "अनाथ: 3" सीएसएस का उपयोग करता हूं और "पी" टैग के साथ काम करता हूं, लेकिन एच 1 या एच 2 के साथ काम नहीं करता है।

@page { 
    size: A4; 
} 

p { 
    orphans:3; 
} 

h1, h2 { 
    orphans:3 
} 

Full example on action जहां:

  • 1-2 पेज: पैराग्राफ अनाथ ठीक काम करता है।
  • 2-3 पृष्ठ: शीर्षलेख काम नहीं करते हैं।

आवश्यकताएँ:

  • एचटीएमएल एक मुख्य div कंटेनर की है।
  • HTML को न बदलें।
  • ब्राउज़र समर्थन महत्वपूर्ण नहीं है (मेरे विशिष्ट काम पर)।
  • मुझे सीएसएस में कुछ चाल की आवश्यकता है (कोई जेएस या Jquery, अधिमानतः)
  • मैं पृष्ठ-ब्रेक-पहले का उपयोग नहीं कर सकता: हमेशा क्योंकि मैं चाहता हूं कि हेडर केवल पृष्ठ के नीचे दिखाई देने पर अगले पृष्ठ पर जाएं।
+0

बहुत अधिक सिद्धांत .. क्या हमें कार्रवाई में कुछ कोड मिल सकता है? –

+0

कोड सहायता मांगने वाले प्रश्नों में इसे पुन: उत्पन्न करने के लिए आवश्यक सबसे छोटा कोड शामिल होना चाहिए ** प्रश्न में ** **। देखें [** न्यूनतम, पूर्ण, और सत्यापन योग्य उदाहरण कैसे बनाएं **] (http://stackoverflow.com/help/mcve) –

+0

आपको अवगत होना चाहिए, प्रिंट-विशिष्ट शैलियों जैसे कि 'अनाथ', 'ब्रेक इसके बाद 'आदि ब्राउज़रों द्वारा कुख्यात रूप से खराब समर्थन है, इसलिए हमेशा ऐसे मामले होंगे जहां ये चीजें काम नहीं करतीं। आम तौर पर प्रिंटिंग और पेज आधारित शैलियों HTML/CSS के लिए एक कमजोर बिंदु हैं, इसलिए यदि आपको अच्छी गुणवत्ता वाले प्रिंट-आउट की आवश्यकता है, तो आपको गंभीरता से पीडीएफ जैसे विकल्पों को देखना चाहिए। – RoToRa

उत्तर

8

टाइपोग्राफी में एक अनाथ है:

एक पैरा खोलने लाइन है कि एक पृष्ठ या स्तंभ के नीचे से ही प्रकट होता है, इस प्रकार पाठ के बाकी हिस्सों से अलग कर दिया।

हालांकि HTML में <h1> और <p> अलग हैं पैराग्राफ तो क्या आप का उपयोग करने के break-after संपत्ति लेआउट इंजन बताने के लिए (कि पैरा के बाद एक पृष्ठ विराम डाल नहीं करने के लिए पक्ष प्रभाव के साथ अगले अनुच्छेद ऊपर ले जाने के लिए है पिछले पृष्ठ पर - अगर फिट - या संगतता के बारे में अगले पृष्ठ पर शीर्ष लेख स्थानांतरित करने के लिए

h1, h2 { 
    break-after: avoid-page; 
} 

नोट: break-after सेटिंग एक सच काम कर मसौदा है और यहां तक ​​कि बुनियादी सुविधाओं को व्यापक रूप से समर्थित नहीं हैं (कोई। tably इंटरनेट एक्सप्लोरर 10 करता है)। इस समाधान करने के लिए आप समान अर्थ के साथ एक और संपत्ति का उपयोग कर सकते हैं:

h1, h2 { 
    page-break-after: avoid; 
} 

ध्यान दें कि page-break-after दोनों पेज और स्तंभ पर लागू होता है।page-break-after अच्छी तरह से एफएफ (it is a bug) द्वारा समर्थित नहीं है तो अगर अनुकूलता महत्वपूर्ण है और पैरा एकाधिक पृष्ठों पर होते नहीं होगा यदि आप एक कंटेनर के अंदर <h1> और <p> लपेटकर वैकल्पिक हल कर सकते हैं (मान लीजिए कि <section> है) और फिर इस तरह page-break-inside लागू होते हैं:

section { 
    page-break-inside: avoid; 
} 

आईएमओ आपको page-break-after और page-break-insidepage-break-inside का उपयोग -moz उपसर्ग के साथ जोड़ना चाहिए जब तक कि वह उस बग को ठीक नहीं करेगा।

+0

आपका उत्तर सही है, मैं समझता हूं और इस बिंदु को जानता हूं, लेकिन सिद्धांत काम नहीं करता है (या मैं कुछ गलत करता हूं)। कुछ कोड दे सकता है (या "सभी टेक्स्ट का चयन करें"/प्रिंट के लिए कोडपेन उदाहरण संशोधित करें और दिखाएं कि कैसे काम करता है? मेरे उदाहरण में, मुझे "ब्ला ब्लाह" हेडर नहीं मिलता है, अगले पृष्ठ पर जाएं। – Manz

+0

एक स्टैंडअलोन फ़ाइल का उपयोग करके कोडपेन के अंदर आज़माएं, यह काम करता है। बेशक ब्राउज़र संगतता अलौकिक है (सबसे अच्छा, टाइपोग्राफी इतना अच्छी तरह से समर्थित नहीं है)। अधिकांश _compatible_ तरीके को आखिरी बार वर्णित किया गया है, यह थोड़ा सा बदलता है कि आउटपुट कैसे प्रदान किया जाता है (क्योंकि यह पैराग्राफ को तोड़ने और जोड़ने के बिना भी संभवतः सभी अनुभागों को एक साथ रखने की कोशिश करेगा - जब आवश्यक हो - पहले शीर्षक से पहले एक पेज ब्रेक)। इस अंतर के साथ यह केवल एक है जिसे मैंने कोशिश की हर ब्राउज़र में सही ढंग से प्रस्तुत किया है। –