2009-08-12 24 views
11

मैं यहाँ एक siple कोड है:jQuery - चेतन/स्लाइड ऊंचाई: 100%

$('.aktualita_sipky').toggle(function() { 
    $(this).parent().find('.aktualita_content').animate({ 
     height: "100%", 
     }, 1500); 
}, function() { 
    $(this).parent().find('.aktualita_content').animate({ 
     height: "120px", 
     }, 1500); 
}); 

अब जब मैं पहली बार 'टॉगल' के रूप में इसे क्लिक करें, यह सिर्फ तुरन्त पता चलता (एनीमेशन) के बिना, जब मैं दूसरे 'टॉगल' पर क्लिक करता हूं, यह अच्छी तरह से स्लाइड करता है।

क्या उस अच्छी एनीमेशन के साथ इसे 100% तक स्लाइड करने का कोई तरीका है?

उत्तर

10

हो सकता है कि आप की तरह कुछ कर सकते हैं:

$height = $(window).height(); // returns height of browser viewport 
//Or 
$height = $(document).height(); // returns height of HTML document 
//Or 
$height = $(whatever).height(); 
$('.aktualita_sipky').toggle(function() { 
    $(this).parent().find('.aktualita_content').animate({ 
     height: $height + 'px', 
     }, 1500); 
}, function() { 
    $(this).parent().find('.aktualita_content').animate({ 
     height: $height + 'px', 
     }, 1500); 
}); 

http://docs.jquery.com/CSS/height

+0

यदि आप पैडिंग, सीमाओं और मार्जिन के लिए खाता बनाना चाहते हैं, तो ऊंचाई() के बजाय बाहरी हाइट (सत्य) का उपयोग करें। (http://api.jquery.com/outerHeight/) – SeanKendle

2

इस के लिए मेरे वैकल्पिक हल div में चाइल्ड तत्वों की ऊंचाइयों को जोड़ने के लिए, मार्जिन के लिए खाते में करने के लिए एक छोटा सा जोड़ने था:

function() { 
    $('.accordionblock.open').removeClass('open'); 
    var childrenheight = 0; $(this).children().each(function() {childrenheight += ($(this).height()*1.2)}); 
    $(this).animate({height:childrenheight},300).addClass('open'); 
    } 
} 
+1

यदि आपने इसके बजाय बाहरी हाइट (सत्य) का उपयोग करने के लिए इसे बदल दिया है, तो मैं इस उत्तर को ऊपर उठाऊंगा। मार्जिन के लिए मनमाने ढंग से ऊंचाई जोड़ना थोड़े ढीले है ... {बच्चों की रात + = $ (यह) .उटर हाइट (सच); } (http://api.jquery.com/outerHeight/) – SeanKendle

0

मैं इस पोस्ट पाया, जबकि अपने आप को एक समाधान की तलाश में और Karim79 एक चर औरका उपयोग कर के महान सुझाव थासमारोह।

मेरे लिए मैं 100% पर ऊंचाई से शुरू नहीं करता क्योंकि मेरे पास स्टाइलशीट में निर्धारित प्रीसेट ऊंचाई है। तो मैं विस्तार करने के लिए फ़ंक्शन में क्या करता हूं, मैं एक चर बना देता हूं जिसमें विशिष्ट तत्व को वापस ले जाने के लिए एक क्वेरी है जिसे मैं विस्तारित करना चाहता हूं और सीएसएस ऊंचाई को 100% में बदलता हूं और ऊंचाई को एक चर में वापस कर देता हूं। फिर मैंने सीएसएस को ऊंचाई के लिए सेट किया (मुझे लगता है कि मैं वर्र्स में इस्तेमाल कर सकता था, मूल प्रीसेट ऊंचाई को भी बता सकता था और साथ ही मैं भविष्य में सीएसएस को संपादित करता हूं) और फिर ऊंचाई के साथ var का उपयोग करके एनीमेशन फ़ंक्शन चलाता हूं।

function expandAlbum(){ 
    var fullHeight = jQuery(this).prev('.albumDropdown').css('height' , '100%').height(); 
    jQuery(this).prev('.albumDropdown').css('height' , '145px'); 
    jQuery(this).prev('.albumDropdown').animate({'height' : fullHeight}, 1000, function(){jQuery(this).stop();}); 
    jQuery(this).html('close'); 
} 

मैं भी बहुत अनुभवी नहीं हूं इसलिए मैला कोडिंग क्षमा करें।

+0

FYI: JQuery के बजाय (यह) आप '$ (यह)' का उपयोग कर सकते हैं। '$ = JQuery' – SeanKendle

+0

इसके अलावा, यह भी काम करेगा: ' var fullHeight = $ (this) .prev ('एल्बम ड्रोपडाउन')। दिखाएं()। बाहरी हाइट (सत्य); ' – SeanKendle

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