2013-06-09 7 views
11

मैं स्नैप.जेएस प्लगइन का उपयोग कर रहा हूं - (यह आपको स्क्रॉलिंग साइड ड्रॉर्स/पैनल बनाने की अनुमति देता है)।एक पूर्ण स्थानांतरित div के अंदर एक निश्चित स्थानांतरित div की आवश्यकता है

यह 3 बिल्कुल स्थित divs बनाकर काम करता है, जिनमें से एक मुख्य सामग्री शामिल है।

खिड़की के शीर्ष पर तय एक div को स्थिति देने का कोई तरीका है जब यह पूरी तरह से स्थित div के अंदर होता है।

फिलहाल मैं बस ब्राउज़र के शीर्ष की बजाय पूरी तरह से स्थित div के शीर्ष पर पिन करने के लिए निश्चित div प्राप्त कर रहा हूं। जब मैं स्क्रॉल करता हूं, तो div मुख्य सामग्री के शीर्ष पर तय रहता है, लेकिन खिड़की नहीं।

उदाहरण के लिए:

<div style="position:absolute;"> 

    <div style="position:fixed;top:0"> 
     <!-- some content which needs to be pinned to top of window --> 
    </div> 

</div> 

पल मैं स्क्रॉल ऑफसेट पर नज़र रखने और मैन्युअल रूप से बच्चे div, जो प्रदर्शन के लिए आदर्श नहीं है के शीर्ष स्थिति को समायोजित करने जावास्क्रिप्ट का उपयोग कर रहा पर।

किसी भी मदद की सराहना की!

+1

बिल्कुल तैनात div है निम्नलिखित सीएसएस लागू: translate3d (0px, 0px, 0px), अगर मैं इसे हटाने के लिए एक निश्चित तत्व बर्ताव एकदम सही ढंग से और विंडो के शीर्ष से पिन है । इस पर कोई विचार क्यों है? –

+0

यही आपका उदाहरण कोड करता है। (क्या आप इसका इरादा रखते हैं?) जब आप किसी तत्व पर तय स्थिति निर्धारित करते हैं तो यह दस्तावेज़ के प्रवाह से बाहर ले जाता है और इसे व्यूपोर्ट के सापेक्ष बनाता है। क्या आप कह रहे हैं snap.js इसे तोड़ता है? – BjornJohnson

+0

दिलचस्प। क्या यह मदद करता है? http://code.google.com/p/chromium/issues/detail?id=20574 – BjornJohnson

उत्तर

2

मैं अपने जावास्क्रिप्ट वैकल्पिक हल दिखा एक बेला कर दिया है देखते हैं - यह घबराहट जब इंटरनेट एक्सप्लोरर में स्क्रॉल, किसी भी विचार।

<div id="displayed-content" class="snap-content scrollable"> 
    <div><!-- regular content --></div> 
     <div><!-- fixed content --></div> 
    <div><!-- footer content --></div> 
</div> 

http://jsfiddle.net/bxRVT/

+0

आपने यहां काफी काम किया है। यह कहना कठिन है कि आईई प्रदर्शन में सुधार कैसे किया जाए। आप वास्तव में CSS3 प्रौद्योगिकियों के अत्याधुनिक पर हैं। मेरा पहला अनुमान यह है कि ट्रांसफॉर्म jQuery .scrollTop के साथ अच्छी तरह से नहीं खेलते हैं, लेकिन आपके द्वारा किए गए कार्यों में सुधार करने की कोशिश करने के लिए यह एक पूरी परियोजना होगी। मैं आपको प्रयास के लिए वोट दूंगा! –

+0

धन्यवाद, मैं अब तक उपरोक्त कार्यान्वयन का उपयोग कर रहा हूं जब तक कि मुझे कुछ बेहतर न लगे। –

0

मैं आपको बस इतना करना कोशिश कर रहे हैं के बारे में थोड़ा अनुमान लगा रहा हूँ, लेकिन आप कुछ इस तरह की तलाश में हो सकता है:

<div class="local-wrap"> 
    <div class="fixed"> 
     Some content which needs to be pinned to top of window 
    </div> 
    <div class="port"> 
     Regular content... 
    </div> 
</div> 

और निम्नलिखित सीएसएस लागू होते हैं:

.local-wrap { 
    position: relative; 
} 
.local-wrap .fixed { 
    position: absolute; 
    top: 0; 
    left: 0; 
    background-color: lightgray; 
    width: 100%; 
    height: 5.00em; 
} 
.local-wrap .port { 
    position: relative; 
    top: 5.00em; 
    min-height: 10em; 
    height: 15em; 
    overflow: auto; 
    border: 1px solid gray; 
    border-width: 0 1px 1px 1px; 
} 

डेमो बेला: http://jsfiddle.net/audetwebdesign/pTJbW/

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

मैंने जो किया है वह .local-wrap कंटेनर को परिभाषित करता है, जिसमें दो बाल ब्लॉक होते हैं, एक .local-wrap के शीर्ष पर और दूसरा नियमित प्रवाह में स्थित है। मैंने का उपयोग .fixed से नीचे रखने के लिए किया था, लेकिन एक शीर्ष मार्जिन भी काम करेगा।

मैंने स्थानीय खिड़की/बंदरगाह के भीतर स्क्रॉलिंग सामग्री का प्रदर्शन करने के लिए कुछ ऊंचाई तय की, लेकिन इसे आपके डिजाइन और एप्लिकेशन के आधार पर बदला जा सकता है।

अस्वीकरण

मैं तो वहाँ अन्य कारणों पर विचार हो सकता है snap.js से परिचित नहीं हूँ। CSS3 पर

टिप्पणी रूपांतरण और फिक्स्ड तत्वों

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

संदर्भ के लिए, Mozilla Developer Network -> CSS Reference -> Transform

+0

दुर्भाग्य से यह काम नहीं करता है क्योंकि div को विंडो के शीर्ष पर पिन किया जाना चाहिए, लेकिन विंडो के साथ स्क्रॉल करेगा जैसे आपके उदाहरण स्क्रॉल में .local-wrap। एक निश्चित स्थिति div का उपयोग करने की सामान्य विधि काम करता है लेकिन केवल तभी जब सीएसएस ट्रैनफॉर्म माता-पिता से पूरी तरह से स्थित div से हटा दिया जाता है। क्या इसके आसपास कोई कार्य है? फिलहाल मैं खिड़की स्क्रॉल होने पर फ्लोटिंग डिव के लिए शीर्ष सीएसएस संपत्ति को समायोजित करने के लिए जावास्क्रिप्ट का उपयोग कर रहा हूं - यह कुछ ब्राउज़रों पर ठीक काम करता है लेकिन दूसरों पर चंचल है। –

+1

मैंने इस बेहतर http://jsfiddle.net/pTJbW/10/ को चित्रित करने के लिए एक jsfiddle बनाया है। स्क्रॉलबार आउटपुट में दिखाई देने तक अपनी ब्राउज़र विंडो को छोटा बनाएं, जब आप निश्चित हेडर स्क्रॉल करते हैं तो सामग्री के साथ स्क्रॉल होगा। हालांकि, यदि आप सामग्री और अद्यतन पर सीएसएस में सीएसएस को परिवर्तित करते हैं, तो आप ध्यान देंगे कि जब आप हेडर स्क्रॉल करते हैं तो निश्चित होता है। –

+0

अच्छा पहेली, तस्वीर अब बहुत स्पष्ट है। अगर मैं चीजों को समझता हूं, यदि आप सीएसएस ट्रांसफॉर्म प्रॉपर्टी को हटाते हैं, तो snap.js काम नहीं करेगा, और यही वह समस्या है जिसे आप चारों ओर घूमने की कोशिश कर रहे हैं। –

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