2015-01-06 8 views
5

मैं सोच रहा था कि एकाधिक तत्वों के लिए एक एकल CSS3 ढाल पृष्ठभूमि लागू करना संभव है या नहीं। दूसरे शब्दों में, ढाल मूल तत्व पर फैलता है लेकिन केवल बाल तत्वों के अंदर दिखाई देता है। Applying gradient over multiple viewsकई तत्वों पर सीएसएस ढाल

यह हालांकि मैं CSS/HTML कोड के रूप में यह जरूरत है, मेरी समस्या ठीक है:

खोज के बाद, मैं इस सूत्र मिल गया।

Image 1

यह बुनियादी सेटिंग है:

समस्या कल्पना करने के लिए, मैं दो तस्वीरें बना दिया। दो <div> एस को ढाल पृष्ठभूमि की आवश्यकता है <div> तत्व के अंदर हैं।

Image 2

आप देख सकते हैं, दूसरी छवि में ढाल perfecly तत्व एक से तत्व बी को fades इस आशय सबसे छवि संपादन प्रोग्राम में आसानी से संभव है, इसलिए मैं सिर्फ एक उपयुक्त छवि का उपयोग कर सकता है वांछित प्रभाव प्राप्त करने के लिए।

हालांकि, चूंकि छवियां शायद इसे हल करने का सबसे अच्छा तरीका नहीं है, इसलिए मुझे उम्मीद है कि यह केवल CSS के साथ ऐसा करने के तरीके पर एक उत्तर मिल जाएगा। मैंने पहले ग्रेडियेंट का इस्तेमाल किया था, लेकिन मुझे अभी तक इस समस्या का समाधान नहीं मिला है।

किसी भी मदद की सराहना की है।

संपादित करें (06/01/15 13:30 GMT + 1): तत्वों ए और बी कोनों दौर के लिए सक्षम होना चाहिए। स्पैनिंग ढाल मूल रूप से radial-gradient माना जाता था, लेकिन इसकी आवश्यकता नहीं है। शायद समस्या वास्तव में हल करने योग्य नहीं है।

+0

कैसे जटिल हैं बच्चे आप विचार कर रहे हैं आकार? उपर्युक्त उदाहरण में, आप दोनों बच्चे को आकार देने और बीच बार जोड़ने के द्वारा शायद इसे नकली बना सकते हैं। – xdhmoore

+0

एक और विचार: यह थोड़ा निराशाजनक होगा, लेकिन आप शायद जेएस के साथ आवश्यक ग्रेडियेंट की गणना कर सकते हैं और प्रत्येक बच्चे तत्वों की स्थिति के आधार पर उन्हें मैन्युअल रूप से लागू कर सकते हैं। विशेष रूप से यदि आप एक लंबवत या क्षैतिज ढाल सोच रहे हैं। – xdhmoore

+0

आयताकार बनाने के लिए पृष्ठभूमि के रूप में ढाल को सेट करने और सीएसएस क्लिपिंग मास्क का उपयोग करने के बारे में कैसे? – tsg

उत्तर

3

डेमो:https://jsfiddle.net/andrewgu/gptbyejt/

एक तरीका यह पूरा करने के लिए है कि आप कर सकते थे हमेशा नकली यह एक ठोस पृष्ठभूमि रंग साथ। आप पृष्ठभूमि में ग्रेडियेंट div प्रदर्शित करते हैं और जो भी सामग्री div एस आप चाहते हैं, ओवरलेइंग div के साथ अलग किया गया जिसका रंग पृष्ठभूमि से मेल खाता है।

लाभ: लचीला, संगत

विपक्ष: ठोस पृष्ठभूमि रंग केवल

Method 1


अन्य तरीके से कुछ CSS clipping कहा जाता है का उपयोग करें। आप clip-path और -webkit-clip-path की सीएसएस घोषणाओं का उपयोग करके ऐसा कर सकते हैं। यह मूल रूप से एक तत्व पारदर्शी का हिस्सा बनाता है। हालांकि, आपको पहले से प्रत्येक तत्व का आकार निर्दिष्ट करने की आवश्यकता है, और वस्तुओं को सही तरीके से प्रदर्शित करने के लिए इसे थोड़ा सा ट्विक करें। यह विधि गैर-ठोस पृष्ठभूमि के साथ काम करती है। लोकप्रिय धारणा के विपरीत, सीएसएस क्लिपिंग क्रॉस-ब्राउज़र संगतता के साथ बहुत अच्छी है।

लाभ: नमूनों पृष्ठभूमि, संगत

विपक्ष: परिभाषित किया जाता है बच्चों के तत्व आकार, में सुधार करने background-attachment: fixed और iframe की

Method 2

+0

अच्छा विचार! क्लिप-पथ चीज सीमा-त्रिज्या वाले तत्वों पर काम करेगी? – curious

+0

मैंने अभी देखा कि क्लिप उदाहरण फ़ायरफ़ॉक्स में काम नहीं कर रहा है। क्या फ़ायरफ़ॉक्स बस इसका समर्थन नहीं करता है? – curious

+0

जाहिर है, [क्लिप-पथ] (http://caniuse.com/#feat=css-clip-path) केवल फ़ायरफ़ॉक्स 33+ में काम करता है, और फिर भी केवल 'url' पैरामीटर के माध्यम से,' बहुभुज 'नहीं। इसका मतलब है कि क्लिपिंग क्षेत्र को परिभाषित करने के लिए आपको एक आकार की एसवीजी फ़ाइल अपलोड करने की आवश्यकता है। यह इंटरनेट एक्सप्लोरर और ओपेरा मिनी में पूरी तरह से असमर्थित बनी हुई है। – andrewgu

0

संयोजन आप के लिए यह काम कर सकता है।
nexts.github.io/Multiple.js की जाँच करें और पर ध्यान देना "यह कैसे काम करता है" खंड

10

(यहां तक ​​कि अगर यह qestion काफी बहुत पुरानी है ...)

Multiple.js पर एक नजर डालें - जो बताती है कि एक आवेदन करने के लिए js के बिना कई तत्वों के लिए ढाल

डेमो पृष्ठ से उद्धरित:

.selector { 
    background-image: linear-gradient(white, black); 
    background-size: cover; 
    background-position: center; 
    background-attachment: fixed; /* <- here it is */ 
    width: 100px; 
    height: 100px; 
} 

background-attachment: fixed व्यूपोर्ट के आकार और हर तत्व उचित हिस्सा में प्रदर्शित करता है के लिए पृष्ठभूमि का विस्तार, वास्तव में क्या जरूरत है!

इसके पीछे का विचार स्मार्ट के रूप में सरल है और अधिकांश आधुनिक ब्राउज़रों (आईई 8 भी) के लिए काम करता है।

यह तो लागू इस तरह दिखता है: example

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