एक साधारण अर्ध-पारदर्शी पृष्ठभूमि रंग के लिए, उपरोक्त समाधान (CSS3 या bg चित्र) सबसे अच्छा विकल्प हैं। हालाँकि, यदि आप कुछ कट्टर (जैसे एनीमेशन, कई पृष्ठभूमि, आदि) करना चाहते हैं, या यदि आप CSS3 पर भरोसा नहीं करना चाहते हैं, तो आप "फलक तकनीक" आज़मा सकते हैं:
.pane, .pane > .back, .pane > .cont { display: block; }
.pane {
position: relative;
}
.pane > .back {
position: absolute;
width: 100%; height: 100%;
top: auto; bottom: auto; left: auto; right: auto;
}
.pane > .cont {
position: relative;
z-index: 10;
}
<p class="pane">
<span class="back" style="background-color: green; opacity: 0.6;"></span>
<span class="cont" style="color: white;">Hello world</span>
</p>
तकनीक बाहरी फलक तत्व के अंदर दो "परतों" का उपयोग करके काम करती है:
- एक ("बैक") जो सामग्री के प्रवाह को प्रभावित किए बिना फलक तत्व के आकार को फिट करता है,
- और एक ("कंट") जिसमें सामग्री शामिल है और फलक का आकार निर्धारित करने में मदद करता है।
position: relative
फलक पर महत्वपूर्ण है, यह फलक के आकार के अनुसार वापस परत बताता है। (आप की जरूरत है <p>
टैग पूर्ण होने के लिए, एक से फलक बदलने <p>
एक करने के लिए <span>
और सभी लपेटो एक पूरी तरह से स्थिति में है कि <p>
टैग।)
इस तकनीक का मुख्य लाभ ऊपर सूचीबद्ध समान लोगों पर है, फलक में एक निर्दिष्ट आकार नहीं है; जैसा कि ऊपर कोडित है, यह पूर्ण-चौड़ाई (सामान्य ब्लॉक-तत्व लेआउट) और सामग्री के रूप में केवल उच्च के रूप में फिट होगा। बाहरी फलक तत्व को किसी भी तरह से आप कृपया आकार दे सकते हैं, जब तक यह आयताकार है (यानी इनलाइन-ब्लॉक काम करेगा; सादे-पुराने इनलाइन नहीं करेगा)।
इसके अलावा, यह आपको पृष्ठभूमि के लिए बहुत अधिक स्वतंत्रता देता है; आप पीछे के तत्व में वास्तव में कुछ भी डालने के लिए स्वतंत्र हैं और यह सामग्री के प्रवाह को प्रभावित नहीं करता है (यदि आप कई पूर्ण-आकार के उप-परतें चाहते हैं, तो सुनिश्चित करें कि उनके पास भी स्थिति है: पूर्ण, चौड़ाई / ऊंचाई: 100%, और ऊपर / नीचे / बाएं / दाएं: ऑटो)।
पृष्ठभूमि इनसेट समायोजन (शीर्ष / नीचे / बाएं / दाएं के माध्यम से) और / या पृष्ठभूमि पिनिंग (बाएं / दाएं या शीर्ष / नीचे जोड़े में से एक को हटाने के माध्यम से) की अनुमति देने के लिए एक भिन्नता है:
.pane > .back {
position: absolute;
width: auto; height: auto;
top: 0px; bottom: 0px; left: 0px; right: 0px;
}
जैसा कि लिखा गया है, यह फ़ायरफ़ॉक्स, सफारी, क्रोम, IE8 + और ओपेरा में काम करता है, हालाँकि IE7 और IE6 को अतिरिक्त CSS और अभिव्यक्तियाँ, IIRC की आवश्यकता होती है, और पिछली बार जब मैंने जाँच की थी, तो ओपेरा में दूसरी CSS भिन्नता काम नहीं करती है।
देखने के लिए चीजें:
- कंट लेयर के अंदर फ्लोटिंग तत्व समाहित नहीं होंगे। आपको यह सुनिश्चित करने की आवश्यकता होगी कि वे साफ हो गए हैं या अन्यथा निहित हैं, या वे नीचे से फिसल जाएंगे।
- हाशिया फलक तत्व पर जाता है और पैडिंग कंटेंट तत्व पर जाता है। विपरीत का उपयोग न करें (कॉन्टेस्ट पर मार्जिन या फलक पर पैडिंग) या आप विषमताओं की खोज करेंगे जैसे पेज हमेशा ब्राउज़र विंडो की तुलना में थोड़ा व्यापक होता है।
- जैसा कि उल्लेख किया गया है, पूरी चीज को ब्लॉक या इनलाइन-ब्लॉक करने की आवश्यकता है। अपने सीएसएस को सरल बनाने के
<div>
बजाय s का उपयोग करने के लिए स्वतंत्र महसूस करें <span>
।
एक फुलर डेमो, इस तकनीक के फ्लेक्सिबलिटी को बंद करके display: inline-block
, और दोनों के साथ auto
और विशिष्ट width
s / min-height
s के साथ मिलकर इसका उपयोग करके दिखा रहा है।
.pane, .pane > .back, .pane > .cont { display: block; }
.pane {
position: relative;
width: 175px; min-height: 100px;
margin: 8px;
}
.pane > .back {
position: absolute; z-index: 1;
width: auto; height: auto;
top: 8px; bottom: 8px; left: 8px; right: 8px;
}
.pane > .cont {
position: relative; z-index: 10;
}
.debug_red { background: rgba(255, 0, 0, 0.5); border: 1px solid rgba(255, 0, 0, 0.75); }
.debug_green { background: rgba(0, 255, 0, 0.5); border: 1px solid rgba(0, 255, 0, 0.75); }
.debug_blue { background: rgba(0, 0, 255, 0.5); border: 1px solid rgba(0, 0, 255, 0.75); }
<p class="pane debug_blue" style="float: left;">
<span class="back debug_green"></span>
<span class="cont debug_red">
Pane content.<br/>
Pane content.
</span>
</p>
<p class="pane debug_blue" style="float: left;">
<span class="back debug_green"></span>
<span class="cont debug_red">
Pane content.<br/>
Pane content.<br/>
Pane content.<br/>
Pane content.<br/>
Pane content.<br/>
Pane content.<br/>
Pane content.<br/>
Pane content.<br/>
Pane content.
</span>
</p>
<p class="pane debug_blue" style="float: left; display: inline-block; width: auto;">
<span class="back debug_green"></span>
<span class="cont debug_red">
Pane content.<br/>
Pane content.
</span>
</p>
<p class="pane debug_blue" style="float: left; display: inline-block; width: auto; min-height: auto;">
<span class="back debug_green"></span>
<span class="cont debug_red">
Pane content.<br/>
Pane content.
</span>
</p>
और यहाँ एक है लाइव डेमो तकनीक का बड़े पैमाने पर इस्तेमाल किया जा रहा: