मैंने इसके लिए एक और समाधान तैयार किया है, जहाँ उच्च-अधिकतम-ऊँचाई मान के लिए -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 की आवश्यकता) का उपयोग करके एक अनुकूलतम अधिकतम ऊंचाई एनीमेशन।
आशा है कि यह भविष्य में किसी (या संदर्भ के लिए मेरे भविष्य के स्वयं) में मदद करता है।
.scrollHeight
DOM फ़ंक्शन IE <8.0 ( developer.mozilla.org/en/DOM/element.scrollHeight ) में काम नहीं करेगा