2011-04-19 9 views
5

जावास्क्रिप्ट का उपयोग कर, HTML तत्वों को ओवरलैप करने का तरीका कैसे पता लगाएं?जावास्क्रिप्ट का उपयोग कर तत्व ओवरलैपिंग (ओवरलेइंग) का पता लगाने के लिए कैसे?

मेरे पास एक आइटम सूची है (<ul>)। यह जावास्क्रिप्ट का उपयोग कर ऊपर और नीचे स्लाइड करता है। जब यह आइटम की संख्या के आधार पर स्लाइड हो जाता है, तो यह अन्य तत्व (<div>) को ओवरलैप कर सकता है, जो इस समय पूर्ण स्थान पर है (इसे बदला जा सकता है)।

मैं कैसे पता लगा सकते हैं, जब <ul> overlaps इस <div>, <div> को नई शैली लागू करने के लिए यह अस्थायी छिपाने के लिए या यह एक छोटा सा नीचे ले जाने के, ओवरलैपिंग को रोकने के लिए?
यह सिर्फ अच्छी नहीं लग रही है, जब वे ओवरलैप))

यहाँ आप देख सकते हैं, मैं क्या बात कर रहा हूँ: http://timetable.raj.fvds.ru/

धन्यवाद एक बहुत!

+0

यदि आपके पास बिल्कुल तत्व हैं, तो यह छोटा नहीं है - आपको प्रत्येक तत्व की स्थिति आदि की गणना करने की आवश्यकता है और तदनुसार कार्य करें। हो सकता है कि आपको बिना किसी प्रभाव के समान प्रभाव प्राप्त करने पर विचार करना चाहिए, हो सकता है कि फ्लोट्स (फ्लोट: बाएं) और निरपेक्ष (स्थिति: पूर्ण) रिश्तेदारों के अंदर कुछ (मिश्रण: रिश्तेदार)। – Andris

उत्तर

9
function isObjOnObj(a,b){ 
    var al = a.left; 
    var ar = a.left+a.width; 
    var bl = b.left; 
    var br = b.left+b.width; 

    var at = a.top; 
    var ab = a.top+a.height; 
    var bt = b.top; 
    var bb = b.top+b.height; 

    if(bl>ar || br<al){return false;}//overlap not possible 
    if(bt>ab || bb<at){return false;}//overlap not possible 

    if(bl>al && bl<ar){return true;} 
    if(br>al && br<ar){return true;} 

    if(bt>at && bt<ab){return true;} 
    if(bb>at && bb<ab){return true;} 

    return false; 
} 
+1

उम ... अगर यह छद्म कोड है, तो सुनिश्चित करें। आपको सभी ऑफसेट माता-पिता की स्थिति की जांच करने की आवश्यकता है, 'ऑफ़सेट विड्थ', 'ऑफसेट हाइट', आदि प्राप्त करें ... –

0

क्यों न केवल नीचे दिए गए div के ऊपर होने के लिए अपने यूएल के जेड-इंडेक्स को बढ़ाएं?

ऐड:

#wrap { 
    z-index : 2; 
    position : relative; 
} 
+0

मैंने पहले ही कोशिश की है। यह भयानक लग रहा है) – Feniks502

0

इस टक्कर पता लगाने की तरह लगता है, और वहाँ एक समाधान सिर्फ तैनात है। इसके बजाए, मैं यह कहने का सुझाव दूंगा कि मेन्यू के ओवरलैप (यानी 10) के लिए कितनी सूची आइटम की आवश्यकता होगी, और div को छुपाएं जब उन मेनू (10 li के साथ) का चयन किया जाता है।

+0

यह असंभव है, विभिन्न साइट पृष्ठों पर सूची आइटमों की मात्रा और इसकी सामग्री अलग है, इसलिए कुछ पृष्ठों पर आइटम सूची वास्तव में बहुत अधिक जगह लेती है। – Feniks502

+0

सूची आइटम या पृष्ठ की सामग्री? यदि सूची आइटम ऊंचाई में समान हैं, तो आप अभी भी काम कर सकते हैं कि 10 आइटम 'शीर्ष' पर 'div' ओवरलैप करेंगे: 100px', इसलिए 5 आइटम ओवरलैप 'टॉप: 50 पीएक्स' आदि। आप एक फ़ंक्शन लिखने के लिए लिखेंगे वस्तुओं की संख्या, और 'div' की स्थिति, और तय करें कि छिपाना है या नहीं। या क्या मैं कुछ न कुछ भूल रहा हूं? – oblig

+0

हे। सूची आइटम लपेटने के लिए आप वर्तमान विंडो चौड़ाई को समीकरण में कारक बना सकते हैं। (और, ज़ाहिर है, पाठ का आकार और पाठ की लंबाई।) आपकी वर्तमान सोच क्या है? – oblig

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