Ciao ragazzi, ho bisogno di un vostro parere per sistemare questo script, che ha la funzione di inserire un contenuto espandibile (effetto collapse) in una pagina web.
Lo script originale e' il seguente: LINK , funziona benissimo con contenuto STATICO.
modificando leggermente lo script pero' sono riuscito a fare in modo che la sezione si Espandesse o rimpicciolisse in automatico, in base al suo contenuto, ecco il codice con il pezzo da me modificato:
Lo script FUNZIONA, il problema e' che cosi facendo, ho perso l'effetto di transizione ottenuto grazie al seguente codice CSS:codice:<script> // Original JavaScript code by Chirp Internet: chirpinternet.eu // Please acknowledge use of this code by including this header. window.addEventListener("DOMContentLoaded", e => { const getContainerHeight = el => { return window.getComputedStyle(el).getPropertyValue("height"); }; const setTransitionHeights = el => { let containerWasOpen = el.classList.contains("open"); el.style.height = null; el.classList.remove("open", "ready"); el.dataset.initial = getContainerHeight(el); el.classList.add("open"); el.dataset.final = getContainerHeight(el); el.classList.remove("open"); if(containerWasOpen) { el.classList.add("open"); el.style.height = el.dataset.final; } else { el.style.height = el.dataset.initial; } el.classList.add("ready"); }; document.querySelectorAll(".collapsible.slow").forEach(current => { let toggler = document.createElement("div"); toggler.className = "toggler"; current.appendChild(toggler); setTransitionHeights(current); toggler.addEventListener("click", e => { current.style.height = current.classList.toggle("open") ? current.dataset.final : current.dataset.initial; }); }); document.querySelectorAll(".collapsible.slow").forEach(l=> { //PEZZO MODIFICATO l.addEventListener("click", e => { //ALTRO PEZZO MODIFICATO document.querySelectorAll(".collapsible.slow").forEach(current => { setTransitionHeights(current); }); }); }) }); </script>
Potete vedere il risultato di questa modifica al codice QUI: LINKcodice:.collapsible.slow { position: relative; overflow: hidden; padding-bottom: 0.5em; transition: height 0.5s ease-out; }
Mentre questa e' la versione con il codice originale (effetto di transizione c'e' ma la sezione non si auto espande/comprime con il contenuto: LINK
Qualcuno mi saprebbe indicare se ho sbagliato qualcosa, o se c'e' qualche modo per mantenere l'effetto di transizione e allo stesso modo far si che la sezione si espande/comprime in base al suo contenuto.
A disposizione per ulteriori chiarimenti, vi sarei davvero grato se mi aiutate.