2012-07-04 13 views
8

अद्यतन - मुझे यकीन है कि मैंने इसे समझ लिया है। कोड कुछ हद तक लंबा है, लेकिन मैंने यहां एक पृष्ठ फेंक दिया ताकि आप स्रोत देख सकें: http://www.sorryhumans.com/knockout-headerसीएसएस का उपयोग करके आप "नॉकआउट" प्रभाव कैसे प्राप्त कर सकते हैं?

अवधारणा इस पर आधारित थी: http://algemeenbekend.nl/misc/challenge_gerben_v2.html और फिर मेरी आवश्यकताओं के लिए अनुकूलित किया गया।

हेडर उत्तरदायी है और बाहर खटखटाया गया है। (कृपया खराब, 1 मिनट उत्तरदायी बीजी छवि कार्यान्वयन को अनदेखा करें!)। यह कार्यान्वयन किसी भी CSS3 का उपयोग नहीं करता है, इसलिए मैं कल्पना करूंगा कि संगतता के साथ कई मुद्दे नहीं होंगे।

मुझे लगता है कि एकमात्र मुद्दा यह है कि जब ब्राउजर चौड़ाई क्रोम में एक विषम संख्या (उदाहरण के लिए 13 9 3 पीएक्स) है तो दाहिने हाथ तरल स्तंभ और मुख्य केंद्र कॉलम के बीच 1px अंतर होता है। मुझे फ़ायरफ़ॉक्स, इंटरनेट एक्सप्लोरर के नवीनतम संस्करण में, या जब चौड़ाई एक संख्या भी है (उदाहरण के लिए क्रोम में 1394 पीएक्स) में यह समस्या नहीं दिखाई देती है। कोई विचार?

मूल प्रश्न: मैं यह पता लगाने की कैसे प्रभाव मैं तलाश कर रहा हूँ प्राप्त करने में असमर्थ हूँ एक हैडर कि मैं तैयार किया गया कोड करने के लिए प्रयास कर रहा हूँ, लेकिन। कृपया संलग्न छवि को देखो (नहीं, यह वास्तव में मैं क्या :) सिर्फ एक उदाहरण पर काम कर रहा हूँ नहीं है!)

example picture

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

क्या यह भी संभव है?

+2

'.png' का उपयोग करना, विशेष रूप से लोगो के लिए ऐसा करने का सबसे आसान तरीका है। – thirtydot

+0

@ सीन आपने क्या प्रयास किया है? खिलौना सीएसएस 'अस्पष्टता' देखा है? –

+0

एक छवि का उपयोग करना एकमात्र तरीका है जिसे मैं भी सोच सकता हूं। [यह पोस्ट] (http://stackoverflow.com/a/7626738/1405830) सहमत है, लेकिन एक विकल्प के रूप में एसवीजी का उल्लेख भी करता है। मुझे यह जानने में दिलचस्पी है कि यद्यपि कोई और तरीका है या नहीं। – Zhihao

उत्तर

4

नॉकआउट प्रभावों के लिए कोई अंतर्निहित समर्थन नहीं है, इसलिए आपको एक छवि के हिस्से के रूप में टेक्स्ट रखना होगा।

यह करने के लिए नॉकआउट प्रभाव के पीछे पृष्ठभूमि छवि के ठोस हिस्सा बनने के लिए होगा सबसे आसान तरीका है। आप एक ठोस पृष्ठभूमि और पारदर्शिता के साथ .png बना सकते हैं जहां आप नॉकआउट प्रभाव चाहते हैं, और पूरे शीर्षलेख को आंशिक रूप से पारदर्शी बनाने के लिए css opacity का उपयोग करें। आपको कई अनुभागों के साथ हेडर सेट अप करने की आवश्यकता होगी ताकि वे अनुभाग जो छवियां नहीं हैं (यानी काले सलाखों के बाहर) में पृष्ठभूमि रंग होता है, जबकि छवियों वाले अनुभाग नहीं होते हैं।

बहुत मोटे तौर पर:

<div id="outerHeaderWithOpacity"> 
    <div class="hasBackground">Left side, will stretch</div> 
    <div class="noBackground">Image(s) go here</div> 
    <div class="hasBackground">As many sets as you need</div> 
    <div class="noBackground">Image(s) go here</div> 
    <div class="hasBackground">Right side, will stretch</div> 
</div> 
+0

यही वह है जो मैं मोटे तौर पर सोच रहा था, लेकिन मुझे पता नहीं लगा कि सीएसएस कैसा दिखता है। मूल छवि का संदर्भ देना, काले रंग के बीच हेडर में क्षेत्र स्क्रीन आकार के बावजूद केंद्रित होना चाहिए। क्या आप उस भाग को समझने में मेरी मदद कर सकते हैं? अब तक आपकी मदद के लिए बहुत बहुत धन्यवाद! –

+0

@ सेनलाइनिन आप चौड़ाई को सेट करने के लिए jQuery का उपयोग कर सकते हैं [इस तरह से कुछ] (http://jsfiddle.net/VPU9A/), लेकिन दूसरे उत्तर में 'flexbox' विधि कहीं अधिक सुरुचिपूर्ण लगती है। – CheeseWarlock

2

http://jsfiddle.net/GZ8Xv/

नहीं सुंदर समाधान

लेकिन प्रयोगात्मक css3 flexbox का उपयोग कर: (display: table वापस आने के साथ)

<div class="wrapper"> 
    <div class="left"><br /></div> 
    <div class="middle"><br /></div> 
    <div class="right"><br /></div> 
</div> 
.left, .right 
{ 
    height:100%; 
    border: 1px solid black; 
    display:table-cell; 
    display: -webkit-flexbox; 
    display: -moz-flexbox; 
    display: -ms-flexbox; 
    display: -o-flexbox; 
    -webkit-flex: 1; 
} 

.middle 
{ 
    display: table-cell; 
    display: -webkit-flexbox; 
    width: 500px; 
    height:100%; 
    border: 1px solid blue 
} 

.wrapper 
{ 
    display: table; 

    display: -webkit-flexbox; 
    display: -moz-flexbox; 
    display: -ms-flexbox; 
    display: -o-flexbox; 
    -webkit-box-orient: horizontal; 
    -moz-box-orient: horizontal; 
    -ms-box-orient: horizontal; 
    -o-box-orient: horizontal; 
    width: 100%; 
    height: 100px; 
} 

कृपया ध्यान दें: फ्लेक्सबॉक्स w3c spec अभी भी प्रवाह में है और तीसरी बार बदल सकता है। मैंने केवल आईई 9 (आईई 9 और आईई 8 मोड दोनों में इसका परीक्षण किया।आईई 7 मोड में काम नहीं करता है) और क्रोम 20 और 22

कुछ मामूली परिवर्तन: http://jsfiddle.net/GZ8Xv/2/ और आपके पास जावास्क्रिप्ट के बिना आपका 5 div लेआउट है।

+0

मदद करने के लिए समय निकालने के लिए बहुत बहुत धन्यवाद! मुझे लगता है कि मुझे एक सभ्य समाधान मिला है जो CSS3 का उपयोग नहीं करता है, जिसे आपने रुचि के साथ मूल पोस्ट अपडेट किया है। –

+2

@ सेनलाइनिन मुझे खुशी है कि आपको एक जवाब मिला। अपने समाधान को उत्तर के रूप में पोस्ट करना अच्छा होगा और इसे स्वीकार किए जाने के रूप में चिह्नित करें। इस तरह दूसरों को आपका समाधान आसान मिल सकता है। –

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

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