2012-04-10 14 views
12

एक तस्वीर मेरे सवाल पर प्रकाश डाला और एक संभावित समाधान के लिए निम्नलिखित पोस्ट देखें:सीएसएस: ओवरफ्लो-वाई: स्क्रॉल; ओवरफ़्लो- एक्स: दिखाई

CSS overflow-y:visible, overflow-x:scroll

हालांकि, इस रणनीति टूट जाता है जब आप वास्तव में स्क्रॉलबार चलते हैं। सुझाए गए कार्यान्वयन में (position: fixed;), टूलटिप्स अपनी स्थिति प्री-स्क्रॉल में बाल div के बगल में प्रदर्शित होता है। इसलिए, जब आप नए बच्चे-divs को देखने के लिए स्क्रॉल करते हैं, तो टूलटिप्स पृष्ठ के नीचे गिरने लगते हैं। http://jsfiddle.net/narcV/4/

कोई भी विचार कैसे मैं टूलटिप्स बना सकते हैं हर समय बच्चे div के आगे प्रदर्शित:

बग का एक डेमो के लिए यहाँ देखें?

+0

यह एक बग नहीं है: 'स्थिति: निश्चित' हमेशा व्यूपोर्ट के सापेक्ष एक तत्व को स्थान देता है, न कि इसकी निकटतम स्थिति: सापेक्ष 'कंटेनर। आपके द्वारा लिंक किए गए प्रश्न के बारे में कुछ अजीब बात है: शीर्षक दिए गए कोड (यह * भी * 'ओवरफ्लो-वाई: स्क्रॉल; ओवरफ्लो-एक्स: दृश्यमान '!) के साथ मेल नहीं खाता है, और मैं नहीं बता सकता आत्म-उत्तर 'स्थिति: निश्चित' का उपयोग करने के लिए कहता है। – BoltClock

+0

हाँ; मुझे लगता है कि उस पोस्ट का शीर्षक एक टाइपो है। मैं यह नहीं कह रहा हूं कि 'स्थिति: तय;' टूटा हुआ है, बल्कि संदर्भित पोस्ट में समाधान छोटी है (क्योंकि, 'स्थिति: निश्चित;' जैसा कि आप वर्णन करते हैं वैसे ही व्यवहार करता है) – Chuck

उत्तर

1

मैं इस जावास्क्रिप्ट का उपयोग कर को लागू करने, this question से getPos समारोह का उपयोग कर समाप्त हो गया।

अंत उत्पाद लगता है:

var scrollPanel = ...; 
var tooltip = ...; 
function nodeHovered(e) { 
    var hovered = e.srcElement; 
    var pos = getPos(hovered); 
    pos.x += hovered.offsetWidth; 
    pos.y -= scrollPanel.scrollTop; 
    tooltip.style.setProperty('left', pos.x); 
    tooltip.style.setProperty('top', pos.y); 
} 

असल में, मैं गणना जहां पृष्ठ पर नोड वर्तमान में प्रदर्शित किया जाता है (खाते में स्क्रॉलबार स्थान ज्ञात), और मैन्युअल रूप से सही जगह पर टूलटिप जगह पृष्ठ।

बहुत बुरा कोई ऐसा करने के लिए कोई सुरुचिपूर्ण/सीएसएस तरीका नहीं है, लेकिन कम से कम यह काम करता है।

2

मुझे लगता है कि आपको position:fixed के बजाय position:absolute का उपयोग करना चाहिए।

.parent { overflow-y:scroll; width:100%; height:100px; } 
.child { position:relative; } 
.child .child-menu { position: absolute; left: 80px;width:200px; top:0px; border: 1px solid black; background-color: green; display: none; } 
.child:hover .child-menu { display: block; } 

फिडल डेमो, http://jsfiddle.net/68fBE/2/

+0

दुर्भाग्य से, मुझे यह आवश्यक है कि टूलटिप बाहर प्रदर्शित हो मुख्य स्क्रॉलिंग फलक का। स्थिति पूर्ण रूप से इसके अंदर फिसल जाएगी क्योंकि अतिप्रवाह-वाई स्क्रॉल करने के लिए सेट है। – Chuck

+0

आपका अतिप्रवाह-वाई स्क्रॉल है। यह आपके टूलटिप को छुपाएगा। चूंकि स्क्रॉल में उच्चतम जेड-इंडेक्स है। – Jashwant

+0

यह बिल्कुल सही नहीं है; यदि आप पोस्ट किए गए मूल JSFiddle में देखते हैं, तो टूलटिप 'स्थिति: निश्चित' का उपयोग करके स्क्रॉलबार के सामने हो सकता है, लेकिन 'स्थिति: पूर्ण;' के साथ यह व्यूपोर्ट के अंदर फिसल गया है, जो पूरी तरह से एक और समस्या है। – Chuck

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