2009-09-18 22 views
9

मैं पेजेलोड और विंडो आकार बदलने पर एक div का आकार बदलने का प्रयास कर रहा हूं। कोड बेलो </body> से पहले रखा गया है, और यह पेजेलोड पर ठीक काम करता है, लेकिन विंडो आकार बदलने पर कुछ भी नहीं करता है। मैंने एक चेतावनी के साथ आकार बदलने का काम किया, जो आकार बदलने पर ट्रिगर करता है, लेकिन ऊंचाई अपरिवर्तित बनी हुई है।jQuery - गतिशील div ऊंचाई

<script type='text/javascript'> 
    $('#main-content') .css({'height': (($(window).height()) - 361)+'px'}); 

    $(window).resize(function(){ 
     $('#main-content') .css({'height': (($(window).height()) - 361)+'px'}); 
     alert('resized'); 
    }); 
</script> 

अद्यतन: एक लंबे ब्रेक के बाद, मैं क्या समस्या का कारण है की खोज की है। मैं एक ही div पर एक स्टाइल स्क्रॉलबार जोड़ने के लिए एक jquery स्क्रिप्ट का उपयोग कर रहा हूँ जिसका आकार बदल रहा है। जब मैं इसे टिप्पणी करता हूं, तो सबकुछ ठीक से बदलता है। मैंने उसी फ़ंक्शन में स्क्रॉलबार प्रारंभिक रूप को आकार बदलने के रूप में स्थानांतरित कर दिया है, और किसी भी भिन्नता की कोशिश की है जिसे मैं सोच सकता हूं .. अभी भी इसे काम पर नहीं लाया जा सकता है।

(.scroll फलक # मुख्य सामग्री div भी वर्ग)

<script type='text/javascript'> 
$(function(){ 
    $('#main-content').css({'height':(($(window).height())-361)+'px'}); 
    $('.scroll-pane').jScrollPane({scrollbarWidth:15, scrollbarMargin:15}); 

    $(window).resize(function(){ 
      $('#main-content').css({'height':(($(window).height())-361)+'px'}); 
    }); 
}); 
</script> 

उत्तर

14

इसे हल किया!

ऊंचाई की गणना करने से पहले जेएसक्रोलपैन को हटाने की आवश्यकता थी, और इसे फिर से लागू करना था।

<script type='text/javascript'> 
$(function(){ 
    $('.scroll-pane').css({'height':(($(window).height())-361)+'px'}); 
    $('#main-content').jScrollPane({scrollbarWidth:15, scrollbarMargin:15}); 

    $(window).resize(function(){ 
      $('.scroll-pane').jScrollPaneRemove(); 
      $('#main-content').css({'height':(($(window).height())-361)+'px'}); 
      $('.scroll-pane').jScrollPane({scrollbarWidth:15, scrollbarMargin:15}); 
    }); 
}); 
</script> 
+0

अरे, मैं अपने ऐप में एक div के लिए गतिशील ऊंचाई बनाने की कोशिश कर रहा था और मैंने आपका कोड इस्तेमाल किया (मैंने स्क्रॉल-फलक के बारे में स्टफ हटा दिया)। :) अच्छा समाधान। – user1080533

+0

'अनकॉट टाइप एरर: $ (...)। जेएसक्रॉलपेन फ़ंक्शन नहीं है ... क्या' jScrollPane' है? इसकी प्लगइन? – KingRider

5

ध्यान दें कि विंडो आकार परिवर्तन समारोह के बाद ही खिड़की आकार दिया जा चुका है एक बार आग,। यह आकार बदलने के दौरान अद्यतन नहीं होता है, इसलिए यदि आप विंडो सीमा को खींचने के लिए खींच रहे हैं, तो माउस बटन को छोड़ने से पहले कोई बदलाव नहीं होगा।

इसके अलावा, आप $(document).ready() भीतर ऐसा करते हैं, इस तरह सुनिश्चित करें:

<script type='text/javascript'> 
$(function() 
{ 
    $('#main-content') .css({'height': (($(window).height()) - 361)+'px'}); 

    $(window).resize(function(){ 
     $('#main-content') .css({'height': (($(window).height()) - 361)+'px'}); 
     alert('resized'); 
    }); 
}); 
</script> 

यहाँ एक working demo है।

+0

विषय को स्पष्ट करने के लिए धन्यवाद, लेकिन मैंने अभी भी समस्या हल नहीं की है .. जब मैं आपके कोड का उपयोग करता हूं, तो आकार समायोजन लोड या आकार बदलने पर काम नहीं करता है। मुझे नहीं पता कि क्यों, आपका उदाहरण पूरी तरह से काम करता है! यदि आपके पास हस्तक्षेप के बारे में कोई विचार है, तो कृपया उत्तर दें .. – lemon

+0

@lemon, क्या आप IE में इसका परीक्षण कर रहे हैं? मुझे आईई में सीएसएस ऊंचाई विधि के साथ divs का आकार बदलने में समस्याएं आई हैं - I * सोच * समाधान div के लिए डिफ़ॉल्ट ऊंचाई को परिभाषित करना है। –

+0

विंडो का आकार बदलता है ब्राउज़र के आधार पर विभिन्न अंतराल पर घटना आग लगती है। फ़ायरफ़ॉक्स के लिए यह उपलब्ध संसाधनों के आधार पर घटनाओं को थ्रॉटल करता है, और सफारी के लिए यह नियमित रूप से नियमित अंतराल पर नियमित रूप से आग लगती है, इसके लिए (प्रत्येक अनुभव के कम से कम पुराने संस्करण), आईई, यह हर संभावित आकार बदलने की क्रिया (और फिर कुछ) के लिए आग लगती है, और सफारी के लिए यह नियमित अंतराल पर लगातार 100- 200 एमएमएस, कार्रवाई के आधार पर (यह फ़ायरफ़ॉक्स के मॉडल के समान है, लेकिन अक्सर बहुत कम आग लगती है)। – eyelidlessness

1

फ़ंक्शन निष्पादित न करें जब तक दस्तावेज़ की ऊंचाई खिड़की की ऊंचाई से कम या बराबर न हो।

$(function() { 
    if($(document).height() <= $(window).height()) { 
    $('#wrapper').css({ 'height': ($(window).height()) }); 
    $(window).resize(function(){ 
     $('#wrapper').css({ 'height': ($(window).height()) }); 
    }); 
    } 
}); 

मुझे समस्याएं थीं जहां सामग्री div के बाहर बहती है।

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