2010-05-03 11 views
28

मेरे पास मेरी वेबसाइट पर एक div है जो खिड़की की ऊंचाई होना चाहिए।विंडो आकार बदलने पर ऊंचाई div कैसे बदलें?

$(document).ready(function() { 
    var bodyheight = $(document).height(); 
    $("#sidebar").height(bodyheight); 
}); 

हालांकि, यह स्वचालित रूप से खिड़की का आकार बदलने पर नहीं बदलता है: यह मैं क्या मिला है? क्या कोई जनता है कि यह कैसे ठीक किया जाता है?

धन्यवाद

+1

कोई विशेष कारण आप सीएसएस के साथ इस समस्या के साथ क्यों सौदा नहीं कर सकता है? जेएस समाधान "कुछ" ब्राउज़रों (मुझे लगता है कि जानवर का नाम देने की जरूरत नहीं है) पर सबसे अच्छा चपटा होगा ... –

+0

https://jsfiddle.net/53hoq9w7/ – Pierre

उत्तर

49

तुम भी ऐसा करने के लिए कि resize घटना में की जरूरत है, इस प्रयास करें:

$(document).ready(function() { 
    $(window).resize(function() { 
     var bodyheight = $(this).height(); 
     $("#sidebar").height(bodyheight); 
    }).resize(); 
}); 
+19

मुझे लगता है कि यह समाधान एक बेहतर जगह होगी यदि यह समाधान था संपादित किया गया ताकि 'तैयार' और 'आकार बदलें' कॉल डुप्लिकेट कोड का उपयोग करने के बजाय एक एकल फ़ंक्शन साझा किया गया हो। लोग जावास्क्रिप्ट कोड को बहुत अंधाधुंध कॉपी-पेस्ट करते हैं: उन्हें सर्वश्रेष्ठ अभ्यास क्यों न दिखाएं? आकार बदलने के लिए – aaaidan

+0

+1। मुझे एक ही समस्या थी और इससे अच्छी तरह से मदद मिली। मैं यद्यपि सलाह का पालन करूँगा और इसे एक ही समारोह में फेंक दूंगा। – Crackertastic

+1

आकार बदलने वाले हैंडलर में आप '$ (दस्तावेज़) 'नोड का उपयोग नहीं कर सकते हैं। मैं इसका आकार बदलकर '$ (यह)' चयनकर्ता का उपयोग करने का सुझाव दूंगा। – bioffe

1

resize घटना का प्रयोग करें।

यह काम करना चाहिए:

$(document).ready(function() { 
    $(window).resize(function() { 
    var bodyheight = $(document).height(); 
    $("#sidebar").height(bodyheight); 
}); }); 
+1

काम करता है आपको अपने $ (दस्तावेज़) के भीतर आकार बदलने वाले ईवेंट हैंडलर की आवश्यकता नहीं है। पहले से ही –

4

क्या अन्य लोगों ने कहा सुनिश्चित करें कि आप एक अलग समारोह में ईवेंट हैंडलर कोड निकालने और यह ready और resize घटना संचालकों से फोन बनाने के लिए इसके अलावा। इस तरह यदि आप कुछ और कोड जोड़ते हैं या इसे अन्य घटनाओं में बांधने की आवश्यकता है तो आपके पास कोड तर्क बदलने के लिए केवल एक ही स्थान होगा।

+0

आपको उस मामले में क्या करना चाहिए यह सुनिश्चित करना है कि आप ऊंचाई को सही जगह पर सेट करें। एक गलती न करें जिसे मैंने एक बार किया था, और मेरे पृष्ठ को शामिल करने वाले दो div की ऊंचाई निर्धारित करें, फिर कॉलम में से एक की चौड़ाई निर्धारित करें - जिसने ऊंचाई बदल दी, जिसके परिणामस्वरूप अतिप्रवाह स्थिति हुई। –

5

इस पर कुछ स्पष्टीकरण, प्रत्येक कॉलबैक के बाद विंडो को आकार बदलने के लिए आपको स्पष्ट करना होगा कि आपको कौन सी ऊंचाई पुनर्प्राप्त करना है।

$(document).ready(function() { 
     $(window).resize(function() { 
      var bodyheight = $(window).height(); 
      $("#sidebar").height(bodyheight); 
     }); 
    }); 

अन्यथा, मेरे अनुभव से, ऊंचाई अब चाहे कितना आप विंडो का आकार बदलने बढ़ती रखना होगा। यह वर्तमान खिड़की की ऊंचाई ले जाएगा।

5

बस दिखाने के लिए सूखी-अप स्वीकार किए जाते हैं जवाब पर टिप्पणी में सुझाव दिया:

$(document).ready(function() { 
    body_sizer(); 
    $(window).resize(body_sizer); 
}); 
function body_sizer() { 
    var bodyheight = $(window).height(); 
    $("#sidebar").height(bodyheight); 
} 

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

$(function(){ 
    resize_main_pane(); 
    $(window).resize(resize_main_pane); 
}); 
function resize_main_pane() { 
    var offset = $('#main_scroller').offset(), 
    remaining_height = parseInt($(window).height() - offset.top - 50); 
    $('#main_scroller').height(remaining_height); 
} 
+1

एचटीएमएल 5 में एचटीएमएल 5 doctype सुनिश्चित करें। विंडो आकार घटाना इन विधियों के साथ काम नहीं करता है जबतक कि आप इसे HTML फ़ाइल के शीर्ष पर नहीं जोड़ते: '' – Bobort

0
$(document).ready(function() 
{ 

    $(window).on("resize",function() { 

      var bodyheight = $(document).height(); 

      $("#sidebar").height(bodyheight); 
    }); 

}); 
संबंधित मुद्दे