2012-12-14 13 views
5

मुझे अपने माता-पिता के साथ स्क्रॉल करने वाला बिल्कुल सटीक तत्व होना चाहिए। पूरी तरह से स्थित तत्व स्क्रोल करने योग्य कंटेनर से अधिक व्यापक हो सकता है, जिस स्थिति में सामग्री वर्तमान में फिसल रही है। ऐसा लगता है कि overflow-y: auto; और overflow-x: visible; संयोजन काम नहीं करता है।दूसरी दिशा में स्क्रॉलिंग के साथ एक दिशा में दृश्यमान अतिप्रवाह

समस्या का वर्णन करने के लिए यहां JSFiddle है। नोटिस पॉपअप क्षैतिज स्क्रॉलिंग का कारण बनता है।

और यह स्क्रॉलिंग के साथ ही here जैसा दिखना चाहिए।

क्या यह सीएसएस के माध्यम से पूरा किया जा सकता है?

उत्तर

3

आपके पास हार्ड कोड वाली चौड़ाई है। <div> स्वचालित रूप से पृष्ठ की पूरी चौड़ाई ले जाएगा, ताकि आप अधिकतम चौड़ाई कि div तो शामिल कर सकते हैं की तरह max-width: 90%

कुछ करने के लिए width: 400px बदलने यहाँ एक JSFiddle उदाहरण है प्रतिबंधित है क्या करना चाहते हैं: http://jsfiddle.net/c8DdL/3/

1

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

1

उपयोग चौड़ाई 400 के बजाय max_width। यह एकमात्र समाधान है।

0

मुझे क्षैतिज स्क्रॉलबार (मैं एक कस्टम स्क्रॉलबार ui) का उपयोग करके, मेरे प्रोजेक्ट में एक समाधान मिला, जिसमें कंटेनर 300 पीएक्स का पैडिंग-दायां और -300 पीएक्स का मार्जिन-दायां दिया गया। पैडिंग और -र्गिन इसे बनाते हैं ताकि सामान्य बच्चों को समान रूप से गठबंधन किया जा सके, सिवाय इसके कि कंटेनर में अतिरिक्त जगह भी है, यदि उस क्षेत्र से एक पूरी तरह से स्थित तत्व फैलता है। (स्क्रॉल करने योग्य क्षेत्र बाहरी सीमाओं के बाहर कुछ भी काटते हैं)

बेशक, यदि आपके पास स्क्रॉल क्षेत्र के दाईं ओर सामग्री है, तो इससे इसे विस्तारित किया जाता है। एक पारदर्शी पृष्ठभूमि के साथ जो एक दृश्य समस्या नहीं है; हालांकि यह माउस घटनाओं को अवरुद्ध करता है।

कि हल करने के लिए, मैं इतना की तरह स्क्रॉल देखने के भाई बहन के रूप में दो तत्व जोड़े,:

// this outer container resizes to match the size of scrollContainer 
<div style={{position: "relative"}> 
    <div id="scrollContainer" style={{paddingRight: 300, marginRight: -300}}> 
     // stuff which might extend to the right 
    </div> 

    // the containers below resize with the outer container 
    // however, notice that the 2nd one is positioned only over the possibly-extended-onto area 

    <div id="insideArea" style={{position: "absolute", left: 0, right: 0, top: 0, bottom: 0}} 
     onMouseEnter={()=> { 
      // we're back inside, so enable scroll-container mouse-events 
      $("scrollContainer").css("pointer-events", "auto"); 

      // prevent self from blocking mouse events for scrollContainer 
      $("insideArea").css("display", "none"); 

      // re-enable extend-area div, so we know when mouse moves over it 
      $("extendArea").css("display", "block"); 
     }/> 

    <div id="extendArea" style={{position: "absolute", top: 0, bottom: 0, left: "100%", width: 300}} 
     onMouseEnter={()=> { 
      // we're over the extend-area, so disable scroll-container mouse events 
      $("scrollContainer").css("pointer-events", "none"); 

      // prevent self from blocking mouse events for behind-extend-area elements 
      $("#extendArea").css("display", "none"); 

      // re-enable inside-area div, so we know when mouse moves over it 
      $("#insideArea").css("display", "block"); 
     }/> 

ऊपर क्या करता है? यह ऐसा करता है जब आपका माउस सामान्य स्क्रॉल-व्यू क्षेत्र में प्रवेश करता है, पॉइंटर-इवेंट सक्षम होते हैं, जिससे आप अंदर सामानों पर क्लिक कर सकते हैं - लेकिन जब आपका माउस विशेष "विस्तारित" क्षेत्र में जाता है, तो स्क्रॉल-व्यू माउस-ईवेंट होते हैं अक्षम, आपको उस क्षेत्र के पीछे सामान्य वस्तुओं पर क्लिक करने देता है।

यह समाधान शायद किसी और के द्वारा उपयोग नहीं किया जाएगा, लेकिन मैंने इसे खोजने में काफी समय बिताया, मैंने सोचा कि मैं इसे वैसे भी साझा करूंगा!

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