2010-06-24 21 views
13

मुझे निम्न समस्या को हल करने की आवश्यकता है।जावास्क्रिप्ट में छवियों को ओवरले कैसे करें?

मेरे पास समान आयामों की दो (या अधिक) .PNG छवियां हैं। प्रत्येक पीएनजी छवि पारदर्शी पृष्ठभूमि रंग के साथ बनाई गई है।

मुझे आईएमजी 1 और आईएमजी 2 पर प्रदर्शित करने की आवश्यकता है, इसलिए उन जगहों पर जहां img2 में ट्रांस्पेरेंट रंग है, img1 देखा जाएगा।

उदाहरण के लिए: आईएमजी 1 पारदर्शी रंग से भरा ऊपरी भाग और नीचे की ओर एक गाय। img2 ऊपरी हिस्से में बादलों और नीचे की ओर पारदर्शी रंग से भरा होता है।

मैं इन दो छवियों को जोड़ना और गाय के ऊपर बादल देखना चाहता हूं।

मैं समझता हूं कि मुझे छवियों को प्रदर्शित करते समय कुछ फ़िल्टर का उपयोग करने की आवश्यकता है, लेकिन यह सुनिश्चित नहीं है कि इसका कौन सा और किस पैरामीटर का उपयोग किया जाए।

+0

आप की जरूरत है आप jQuery उपयोग कर रहे हैं करने के लिए सख्ती से है कि जे एस में या कर सकते हैं आप अन्य उपकरणों (मैं का उपयोग करते हैं मैं PHP/जीडी के बारे में सोच रहा हूँ)? – nico

+3

यह कुछ ऐसा है जो आप जावास्क्रिप्ट –

उत्तर

3

आपको किसी भी प्रकार के फ़िल्टर (except in IE6) का उपयोग करने की आवश्यकता नहीं है।

आप दोनों तत्वों को एक ही क्षेत्र पर कब्जा करने के लिए सीएसएस position: absolute का उपयोग करके प्रत्येक-दूसरे के शीर्ष पर <img> तत्वों को स्थानांतरित कर सकते हैं।

In IE6, you'll need an AlphaImageLoader filter simply to display the PNGs with transparency

+0

के बजाय सीएसएस का उपयोग करके प्राप्त करेंगे, क्षमा करें, मैंने इसका उल्लेख नहीं किया है: मैं आईई 6 में हूं :( क्या इसे हल करने का कोई तरीका है? – Leo

+0

@Leo: हाँ; आपको 'AlphaImageLoader' का उपयोग करने की आवश्यकता है फ़िल्टर करें। http://24ways.org/2007/supersleight-transparent-png-in-ie6 – SLaks

+0

मुझे समझ में आया कि आईई 6 में मुझे फिल्टर का उपयोग करने की आवश्यकता है, जैसे: फ़िल्टर: प्रोजेड: DXImageTransform.Microsoft.AlphaImageLoader (...); क्या कोई इसे लिख सकता है कि इसे कैसे करें? धन्यवाद – Leo

0

आप अपने .style.position को "पूर्ण" सेट करने का प्रयास कर सकते हैं, उन्हें छोड़ दिया और शीर्ष (या सही है या नीचे) के साथ एक ही निर्देशांक देते हैं, और फिर अपनी z- सूचकांक बदल जाते हैं। हालांकि यह काफी गंदा है, और शायद यह आपके पृष्ठ के साथ अच्छा काम नहीं करता है, लेकिन मैं एक और समाधान के बारे में सोच नहीं सकता।

15

कुछ इस तरह (बस HTML/CSS का प्रयोग करके) काम करना चाहिए:

HTML:

<div class="imageWrapper"> 
    <img class="overlayImage" src="cow.png"> 
    <img class="overlayImage" src="clouds.png"> 
    <img class="overlayImage" src="downpart.png"> 
</div> 

सीएसएस:

.imageWrapper { 
    position: relative; 
} 
.overlayImage { 
    position: absolute; 
    top: 0; 
    left: 0; 
} 

ध्यान रखें कि IE6 नहीं है पीएनजी में पारदर्शिता को बहुत अच्छी तरह से संभालें। यदि आपको आईई 6 में काम करने की ज़रूरत है, तो आपको अपने द्वारा निर्दिष्ट फ़िल्टरों को लागू करने की आवश्यकता होगी। यह प्रक्रिया detailed here है।

+0

मैं अपने उदाहरण (सीएसएस और HTML के साथ) का इस्तेमाल किया और यह हमेशा दूसरी छवि प्रदर्शित करता है और मुझे पहले दिखने वाले हिस्सों के हिस्सों को नहीं देखा जाता है। मेरी छवियों में निश्चित रूप से पारदर्शी बैकग्राउंग है, मैंने उन्हें बनाने के लिए निम्न PHP का उपयोग किया:

$ परिणाम इमेज = imagecreatetruecolor (100, 100); $ trans_colour = imagecolorallocatealpha ($ परिणाम छवि, 0, 0, 0, 127); imagefill ($ परिणाम छवि, 0, 0, $ trans_colour); और बाद में गैर पारदर्शी रंग के साथ छवि पर चित्रकार।

Leo

+0

हाँ, यदि आप आईई 6 का उपयोग कर रहे हैं, तो आपको पारदर्शिता कार्य करने के लिए फ़िल्टर जोड़ने की आवश्यकता होगी। इस मामले में jQuery का उपयोग कर – pkaeding

3

किसी भी ब्राउज़र

<script> 
$(function() { 
    var position = $("#i1").offset(); 
    $('#i2').css({ position:'absolute', top:position.top, left: position.left}); 
}); 
</script> 
<img id='i1' src='images/zap_ring.png' /> 
<img id='i2' src='images/zap_ring_hover.png' /> 

में यह कोशिश करते हैं और समायोजित top & left मूल्यों

$('#i2').css({ position:'absolute', top:position.top-10, left: position.left+5}); 
+4

एक फ्लाई को मारने के लिए AK47 का उपयोग करना है। – rochal

+0

मैंने प्रत्येक छवि के लिए शैली = "फ़िल्टर: प्रोजेड: DXImageTransform.Microsoft.Alpha (अस्पष्टता = 50)" का उपयोग किया और वे दोनों आधा ट्रांस्पेंट एक दूसरे पर देखे गए। मुझे पूरी तरह से अलग प्रभाव की आवश्यकता है: दूसरी छवि 100% अस्पष्टता देखें, जहां स्थानों पर पारदर्शी रंग पहली छवि देखें। – Leo

+0

ठीक है, इस तरह मैं मक्खियों को मारता हूं ... – Darthg8r

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