2010-08-25 15 views
11

मैं आसानी से "अस्पष्टता" संपत्ति चेतन कर सकते हैंjQuery में, मैं "अधिकतम-ऊंचाई" सीएसएस संपत्ति को कैसे एनिमेट कर सकता हूं?

$("#blah").animate({ opactiy: 0.5}, 1000); 

मैं कैसे चेतन कर सकते हैं अधिकतम ऊँचाई सीएसएस संपत्ति ... उदाहरण:

$("#blah").animate({ "max-height": 350}, 1000); 

(संकेत, कि कोड काम नहीं करता है)

संपादित करें:

    : नीचे दिए गए प्रश्नों का उत्तर देने के 210
  1. सभी सीएसएस वर्ग "blah"
  2. छवियों
  3. यादृच्छिक आकार के हैं की एक से अधिक चित्रों रहे हैं, लेकिन वे सभी अधिकतम ऊंचाई है: 100px
  4. कोई उपयोगकर्ता किसी छवि पर घूमता है, मैं यह अधिकतम चेतन करना चाहते हैं -height

उत्तर

0

ठीक है, इसलिए जो भी मैं चाहता था उसे करने का कोई तरीका नहीं है ... इसलिए मुझे सामान्य "एनीमेशन" फ़ंक्शन (x से y से मिली मिलीसेकंड तक) के लिए अपना स्वयं का फ़ंक्शन बनाना पड़ा है। । Generic "Animate" function with jQuery

मैं क्या यह रूप में अच्छी तरह से कर सकते हैं का एक डेमो में शामिल हैं:

मैं एक ब्लॉग पोस्ट हुए बताया कि कैसे मैं इसे यहाँ किया था लिखा था। डेमो लिंक लेख के निचले हिस्से में है, या अधीर के लिए, आप बस here पर क्लिक कर सकते हैं।

+0

किसी ने तब से यही समस्या हल की है और हल किया है http://stackoverflow.com/questions/4901643/animate-max-width-on-img-jquery – Craig

1

मुझे लगता है कि आप ऊंचाई संपत्ति पहले चेतन चाहिए और जब एनीमेशन ऑटो को ऊंचाई सेट की जगह और करने के लिए रीसेट अधिकतम-ऊंचाई क्या आपको इसकी आवश्यकता होने के लिए समाप्त हो गया है (जिससे आसानी से ऊंचाई अन-सीमित) :

$("#blah").animate({ "height": 350}, 1000, function(){ 
    $(this).css('height','auto').css('max-height',350); 
}); 
+0

उपयोग करने के लिए ऊंचाई संपत्ति एनिमेट छवियों है कि तुलना में "अधिकतम" अपेक्षाकृत कम होता है खिंचाव होता है। –

1

मैं उलझन में हूँ यहां आवश्यकता से। यदि आप संभवतः कुछ एनिमेट करना चाहते हैं तो इसे पहले से अधिकतम ऊंचाई के बराबर होना चाहिए। तत्व की ऊंचाई की जांच करने के लिए मैं एक कथन करता हूं, इसकी अधिकतम ऊंचाई बराबर होती है, यदि अधिकतम ऊंचाई को हटा दें और फिर ऊंचाई को एनिमेट करें। एक ही प्रभाव होना चाहिए

+0

यदि मैं ऊंचाई को एनिमेट करता हूं, मान लें, 1000 ... तो मैं उन छवियों को खींचने जा रहा हूं जो केवल 300px लंबा हैं। --- लेकिन, अगर मैं अधिकतम ऊंचाई को एनिमेट करता हूं, तो लंबी छवियां बढ़ेगी, लेकिन छोटे लोग 300px से आगे नहीं बढ़ेंगे ... इसलिए यह वही प्रभाव नहीं है। (हालांकि अच्छा विचार) –

+0

आह, मैं देखता हूं, मैं तत्वों को छवियों की उम्मीद नहीं कर रहा था। मुझे लगता है कि यह जाने का रास्ता है। संभवतः एक ऐसा फ़ंक्शन है जो संदर्भ के लिए छवियों के आकार को पकड़ता है। क्षमा करें मैं और मदद नहीं कर सकता! नोट: आपके संपादित प्रश्न में आप कहते हैं कि आप उस ऊंचाई को अप्रतिबंधित करेंगे जो थोड़ा उलझन में है। मैं समझता हूं कि आप प्रतिबंधित ऊंचाई को बढ़ाना चाहते हैं। यदि प्रारूप सत्य है तो आप ऊंचाई को 100% तक एनिमेट कर सकते हैं। मैं अन्य उपयोगकर्ताओं के लिए सह संलयन से बचने में मदद के लिए इसका उल्लेख करता हूं – lnrbob

9

यह प्रश्न थोड़ा पुराना हो रहा है, लेकिन यहां किसी मूलभूत jQuery का उपयोग करके इसे हल किया गया है, अगर किसी और को एक साधारण समाधान की आवश्यकता है।

मेरे मामले में, मेरे पास ब्लॉग पोस्ट की एक सूची है जो पहले max-height के साथ पृष्ठ पर प्रस्तुत की जाती है जो केवल पाठ की पहली 4 पंक्तियां दिखाती है, शेष overflow: hidden है। मेरे पास एक विस्तार/पतन बटन है जो आलेख को अपने संक्षिप्त रूप से विस्तारित (पूरी तरह से प्रदर्शित) और फिर से वापस करने के लिए टॉगल करता है।

पहले मैंने अधिकतम ऊंचाई संपत्ति को एनिमेट करने की कोशिश की और जैसा कि आपने ऊपर खोजा है, यह काम नहीं करेगा। मैंने सीएसएस संक्रमण के साथ एक ही निराशाजनक परिणाम के साथ यह भी कोशिश की।

मैंने इसे '1000em' जैसी बहुत बड़ी संख्या में सेट करने का भी प्रयास किया, लेकिन इसने एनिमेशन को गूंगा दिखने के रूप में देखा क्योंकि यह सचमुच इस तरह के बड़े मूल्य (जैसा कि आप उम्मीद करेंगे) में इंटरपोल कर रहे थे।

मेरे समाधान scrollHeight, जो एक बार पेज लोड किया जाता है इस प्रकार प्रत्येक कहानी के प्राकृतिक ऊंचाई निर्धारित करने के लिए प्रयोग किया जाता है का उपयोग करता है:

$(function(){ // DOM LOADED 

    // For each story, determine its natural height and store it as data. 
    // This is encapsulated into a self-executing function to isolate the 
    // variables from other things in my script. 
    (function(){ 

    // First I grab the collapsed height that was set in the css for later use 
    var collapsedHeight = $('article .story').css('maxHeight'); 

    // Now for each story, grab the scrollHeight property and store it as data 'natural'   
    $('article .story').each(function(){ 
     var $this = $(this); 

     $this.data('natural', $this[0].scrollHeight); 
    }); 

    // Now, set-up the handler for the toggle buttons 
    $('.expand').bind('click', function(){ 
     var $story = $(this).parent().siblings('.story').eq(0), 
      duration = 250; // animation duration 

     // I use a class 'expanded' as a flag to know what state it is in, 
     // and to make style changes, as required. 
     if ($story.hasClass('expanded')) { 
     // If it is already expanded, then collapse it using the css figure as 
     // collected above and remove the expanded class 
     $story.animate({'maxHeight': collapsedHeight}, duration); 
     $story.removeClass('expanded'); 
     } 
     else { 
     // If it is not expanded now, then animate the max-height to the natural 
     // height as stored in data, then add the 'expanded' class 
     $story.animate({'maxHeight': $story.data('natural')}, duration); 
     $story.addClass('expanded'); 
     } 
    }); 

    })(); // end anonymous, self-executing function 

}); 

छवियों के साथ भी ऐसा ही करने के लिए, मैं सिर्फ एक बाहरी में उन्हें लपेट होगा div जो आप max-height और overflow:hidden पर सेट करेंगे, जैसे मैंने ऊपर div.story का उपयोग किया था।

+0

बीटीडब्ल्यू, स्क्रोलहेइट हमेशा उपलब्ध है, ताकि आपको इसे "डेटा" फ़ील्ड में कैश करने की आवश्यकता न हो। – PF4Public

1

शुद्ध सीएसएस समाधान

एचटीएमएल

<div>max-height element</div> 

सीएसएस

div { 
    max-height:20px; 
    overflow:hidden; 

    -moz-transition: 1s; 
    -ms-transition: 1s; 
    -o-transition: 1s; 
    -webkit-transition: 1s; 
    transition: 1s;} 

div:hover { 
    max-height:300px} 

DEMO

का आनंद लें!

1

मैं एक ही चीज़ में भाग गया। हालांकि विचार के लिए THX -

जवाब "maxHeight" बजाय "max-height" ...

+2

दोनों 'maxHeight' और '" अधिकतम-ऊंचाई "' jQuery के नए संस्करणों में काम करेंगे। http://jsfiddle.net/9jswu7L6/1/ – apaul

+0

प्रश्न jQuery के पुराने संस्करणों के साथ अधिकतम ऊंचाई को एनिमेट करने का एक तरीका मांग रहा है। http://jsfiddle.net/9jswu7L6/2/ – apaul

+0

@ apaul34208 मैंने दो बार प्रश्न पढ़ा, jQuery के संस्करण का कोई उल्लेख नहीं है। हालांकि, मैं मानता हूं कि पुराने संस्करणों में, इस काम को करने के लिए कुछ अतिरिक्त प्रकार के समायोजन होना होगा (साथ ही, मूल प्रश्न 2010 की तारीख थी, लेकिन इस साल अपडेट किया गया था)। – rfornal

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

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