2011-02-07 8 views
13

क्या jQuery के लिए एक विशिष्ट मीडिया प्रकार (उदा। प्रिंट) के लिए सीएसएस को संशोधित करना संभव है?क्या jQuery एक विशिष्ट मीडिया प्रकार के लिए सीएसएस को संशोधित कर सकता है?

मेरी विशिष्ट समस्या यह है कि मैं किसी तत्व पर एनिमेट का उपयोग कर रहा हूं और यह प्रिंट स्टाइलशीट को ओवरराइड कर रहा है, जो मेरे प्रिंट लेआउट को खंडित करता है। हालांकि मेरी समस्या सामान्य प्रश्न से थोड़ा अलग है, मुझे लगता है कि एक उत्तर मुझे मेरी समस्या का समाधान करने में मदद कर सकता है। कोई भी संभावित कामकाज भी सहायक होगा। बहुत आभारी।

उत्तर

6

आपको जावास्क्रिप्ट के साथ ऐसा करने की आवश्यकता नहीं है। बस अपने सीएसएस दस्तावेज़ में @media नियम का उपयोग करें। आप इन सभी चीजों को केवल एक सीएसएस फ़ाइल में लिख सकते हैं। यहाँ विशिष्ट W3C Documentation

@media screen { 

/* all your fancy screen css with a bunch of animation stuff*/ 

} 

@media print { 

/* all your fancy print css just plain */ 

} 

आप अत्यधिक विशेष घोषणाओं लिख सकते हैं और अपनी आवश्यकताओं के सभी तत्वों से मेल कर सकते हैं। बीटीडब्ल्यू ने को IE6 पर समर्थित किया है। हमारी परियोजनाओं में एक आकर्षण की तरह काम करता है।

@media print { 
    body { font-size: 10pt } 
} 

@media screen { 
    body { font-size: 13px } 
} 

@media screen, print { 
    body { line-height: 1.2 } 
} 
+3

यह मेरी समस्या को हल करने में मत सोचो। आइए कहें कि मैंने सुझाए गए स्टाइलशीट को सेटअप किया है। मान लें कि मैंने प्रिंट और स्क्रीन के लिए अलग-अलग चौड़ाई निर्दिष्ट की हैं। पृष्ठ प्रदर्शित होने के बाद, मैं चौड़ाई बदलने के लिए jquery $ (div) .animate ({width: 100px} का उपयोग करता हूं। अब जब मेरे पास ब्राउज़र प्रिंट होता है, तो यह प्रिंट चौड़ाई के बजाय नई "100px" चौड़ाई का उपयोग करेगा। उम्मीद है कि समझ में आता है। –

+1

यह आपकी समस्या के लिए सही एड्रेस है :) jQuery चौड़ाई को इनलाइन-शैली (... शैली = "चौड़ाई: 100 पीएक्स" ...) के रूप में लिखता है। इनलाइन शैलियाँ विशिष्टता में अधिक हैं। यही कारण है कि आपका ब्राउज़र आपके दस्तावेज़ को मुद्रित करने के लिए इनलाइन चौड़ाई के साथ काम करता है। आपको केवल इनलाइन शैली चौड़ाई (http://css-tricks.com/override-inline-styles-with-css/) ओवरराइड करना होगा। और वास्तव में आपको अपनी प्रिंट शैली के लिए '@media print' के भीतर सेट करना चाहिए। – gearsdigital

+0

मीठा, ओवरराइड चाल करना चाहिए। धन्यवाद! –

4

एक सीएसएस अपने मीडिया (प्रिंट) के लिए विशिष्ट नियम है कि एक तत्व खाल के साथ जोड़े (जैसे #div {प्रदर्शन: कोई नहीं;}) अपनी स्क्रिप्ट में

, अगर यह:

$('#div').is(':visible') 

सच है, तो आप प्रिंट मीडिया (प्रिंटिंग) पर हैं।

+0

चालाक दृष्टिकोण। अच्छी सोच, जूलियन। – Corey

+0

मुझे नहीं लगता कि यह काम करेगा, कम से कम नहीं जब आपके पास एक लोड किया गया पृष्ठ है जिस पर आपने प्रिंट बटन दबाया था। समस्या यह है कि डोम को पुनः लोड नहीं किया जाएगा और इसलिए यह चेक निष्पादित नहीं किया गया है। आप 'window.matchMedia ('print') 'का उपयोग कर सकते हैं और मीडिया परिवर्तनों को सुन सकते हैं लेकिन यह बहुत विश्वसनीय नहीं है। – Thomas

+0

यह आईई 8 +, क्रोम और एफएफओक्स पर काम करता है (परीक्षण)। बीटीडब्लू, इसे एक डीओएम रीलोड की आवश्यकता नहीं है क्योंकि यह एक jQuery एक्सटेंशन (दृश्यमान छद्म) और शुद्ध जावास्क्रिप्ट है। –

संबंधित मुद्दे