imagem
/* Scroll suave quando a SANFONA (e-n-accordion) abre */ (function () { function ready(fn){ if (document.readyState !== "loading") fn(); else document.addEventListener("DOMContentLoaded", fn); } ready(function(){ var wrappers = document.querySelectorAll(".thumb-acc-sanfona"); if (!wrappers.length) return; wrappers.forEach(function(wrap){ var items = wrap.querySelectorAll(".e-n-accordion-item"); // detalhes da sanfona items.forEach(function(item){ // 1) Se for
, use o evento nativo "toggle" if ("ontoggle" in document.createElement("details")) { item.addEventListener("toggle", function(){ if (item.open) scrollToItem(item, wrap); }); } else { // 2) Fallback: escuta o clique no título e confere depois se abriu var head = item.querySelector(".e-n-accordion-item-title"); if (head) { head.addEventListener("click", function(){ setTimeout(function(){ var opened = item.hasAttribute("open") || item.classList.contains("e-active") || head.getAttribute("aria-expanded") === "true"; if (opened) scrollToItem(item, wrap); }, 60); // dá tempo do DOM aplicar o estado aberto }); } } }); function scrollToItem(el, context){ // offset final vem de CSS var, admin bar e header sticky se existirem var css = getComputedStyle(context); var varOffset = parseInt((css.getPropertyValue("--scroll-offset") || "0").trim(), 10) || 0; var offset = varOffset; var admin = document.getElementById("wpadminbar"); if (admin) offset += admin.offsetHeight; // pega o primeiro header sticky ativo (se houver) var sticky = document.querySelector(".elementor-sticky--active"); if (sticky) offset += sticky.offsetHeight; // rola até o topo do item, respeitando o offset calculado var y = window.pageYOffset + el.getBoundingClientRect().top - offset; window.scrollTo({ top: y, behavior: "smooth" }); } }); }); })();