Это работает.Он расширяет ul, захватывает высоту и ширину и сворачивает их перед отображением DOM.
<style>
#myId {
display: none;
}
.display-block {
display: block !important;
}
</style>
<button onclick="expandMenu('myId')">Menu Item</button>
<ul id="myId">
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
</ul>
<script>
const element = document.getElementById('myId')
element.style.display = 'block'
let height = element.clientHeight
let width = element.clientWidth
console.log('height', height)
console.log('width', width)
element.style.display = 'none'
function expandMenu(id) {
const element = document.getElementById(id)
element.classList.add('display-block')
let height = element.clientHeight
let width = element.clientWidth
console.log('height', height)
console.log('width', width)
}
</script>
![enter image description here](https://i.stack.imgur.com/uIpWS.png)