मैंने इसके लिए एक और समाधान तैयार किया है, जहाँ उच्च-अधिकतम-ऊँचाई मान के लिए -much का उपयोग करना आवश्यक नहीं है। यह ढह चुके DIV की आंतरिक ऊंचाई की गणना करने के लिए जावास्क्रिप्ट कोड की कुछ पंक्तियों की आवश्यकता है लेकिन उसके बाद, यह सभी CSS है।
1) प्राप्त करने और ऊंचाई स्थापित करने
ध्वस्त तत्व (उपयोग करके scrollHeight) की आंतरिक ऊंचाई प्राप्त करें । मेरे तत्व में एक वर्ग है .section__accordeon__contentऔर मैं वास्तव में forEach()सभी पैनलों के लिए ऊँचाई सेट करने के लिए इसे लूप में चलाता हूं , लेकिन आपको यह विचार मिलता है।
document.querySelectorAll( '.section__accordeon__content' ).style.cssText = "--accordeon-height: " + accordeonPanel.scrollHeight + "px";
2) सक्रिय आइटम का विस्तार करने के लिए सीएसएस चर का उपयोग करें
अगला, max-heightआइटम को एक .activeवर्ग होने पर मान सेट करने के लिए सीएसएस चर का उपयोग करें ।
.section__accordeon__content.active {
max-height: var(--accordeon-height);
}
अंतिम उदाहरण
इसलिए पूर्ण उदाहरण इस तरह से है: पहले सभी समझौते पैनल के माध्यम से लूप और scrollHeightसीएसएस चर के रूप में अपने मूल्यों को संग्रहीत करें । अगले max-heightतत्व के सक्रिय / विस्तारित / खुले राज्य पर मूल्य के रूप में सीएसएस चर का उपयोग करें ।
जावास्क्रिप्ट:
document.querySelectorAll( '.section__accordeon__content' ).forEach(
function( accordeonPanel ) {
accordeonPanel.style.cssText = "--accordeon-height: " + accordeonPanel.scrollHeight + "px";
}
);
सीएसएस:
.section__accordeon__content {
max-height: 0px;
overflow: hidden;
transition: all 425ms cubic-bezier(0.465, 0.183, 0.153, 0.946);
}
.section__accordeon__content.active {
max-height: var(--accordeon-height);
}
आखिर तुमने इसे हासिल कर ही लिया है। केवल सीएसएस और जावास्क्रिप्ट कोड की कुछ पंक्तियों (कोई jQuery की आवश्यकता) का उपयोग करके एक अनुकूलतम अधिकतम ऊंचाई एनीमेशन।
आशा है कि यह भविष्य में किसी (या संदर्भ के लिए मेरे भविष्य के स्वयं) में मदद करता है।
.scrollHeightDOM फ़ंक्शन IE <8.0 ( developer.mozilla.org/en/DOM/element.scrollHeight ) में काम नहीं करेगा